1

有一个日期字段,当月份 >=10 时,我需要将其从 mddyy 或 mmddyy(数字格式)转换为 mmddyy 日期格式。还没有在网上找到任何答案。

4

3 回答 3

0

您可以使用格式:-

FORMAT ( table.myDateColumn, 'd', 'en-US' )

编辑:-

尝试这个:-

SELECT LTRIM(STR(MONTH(DateColumn)))+'/'+LTRIM(STR(DAY(DateColumn)))+'/'+STR(YEAR(DateColumn),4)
于 2013-08-15T17:48:53.913 回答
0

我的上述解决方案在技术上不起作用,也不与 SQL Server 中 SQL 的系统范围设置一致 - “两位数年份截止”。通常,SQL Server 将具有 2 位数年份或值为 49 的任何日期视为 20xx 年或 2049。此后具有 2 位数年份的日期,例如 70 被解释为 19xx (70 -> 1970)。感谢 marc_s 就该主题发表的文章。我的解决方案不需要自定义函数或 SQL Server 设置更改,它确实考虑了一位数和两位数的月份。这是:

Select
Convert (datetime, --varchar depending on desired format--
         CASE 
    WHEN         LEN(CONVERT(varchar(6), dt.datefield))     <  6 and
           SUBSTRING(CONVERT(varchar(6), dt.datefield),4,2) <  50
    THEN ('0' + LEFT(CONVERT(varchar(6), dt.datefield),1))  + '-' +
           SUBSTRING(CONVERT(varchar(6), dt.datefield),2,2) + '-' +
         ('20'+RIGHT(CONVERT(varchar(6), dt.datefield),2))
    WHEN         LEN(CONVERT(varchar(6), dt.datefield))     =  6 and
           SUBSTRING(CONVERT(varchar(6), dt.datefield),5,2) <  50
    THEN          (LEFT(CONVERT(varchar(6), dt.datefield),2))  + '-' +
           SUBSTRING(CONVERT(varchar(6), dt.datefield),2,2) + '-' +
         ('20'+RIGHT(CONVERT(varchar(6), dt.datefield),2))
    WHEN         LEN(CONVERT(varchar(6), dt.datefield))     <  6 and
      SUBSTRING(CONVERT(varchar(6), dt.datefield),4,2) >= 50
    THEN ('0' + LEFT(CONVERT(varchar(6), dt.datefield),1))  + '-' +
           SUBSTRING(CONVERT(varchar(6), dt.datefield),5,2) + '-' +
         ('19'+RIGHT(CONVERT(varchar(6), dt.datefield),2)) 
    WHEN         LEN(CONVERT(varchar(6), dt.datefield))     =  6 and
           SUBSTRING(CONVERT(varchar(6), dt.datefield),5,2) >= 50
    THEN       (LEFT(CONVERT(varchar(6), dt.datefield),2))  + '-' +
                SUBSTRING(CONVERT(varchar(6), dt.datefield),2,2) + '-' +
    ('19'+(LEFT(CONVERT(varchar(7), dt.datefield),2)))
    End) as MaintDate 
FROM   
dbo.date_table dt
于 2013-08-22T16:14:44.187 回答
0

这得到了我寻求的一般外观:

select
CASE WHEN LEN(CONVERT(varchar(6), datefield)) < 6
THEN ('0' + LEFT(CONVERT(varchar(6), datefield),1) + '-' +
      SUBSTRING(CONVERT(varchar(6), datefield),2,2) + '-' +
      LEFT(CONVERT(varchar(7), datefield),4))
ELSE (LEFT(CONVERT(varchar(6), datefield),2) + '-' +
      SUBSTRING(CONVERT(varchar(6), datefield),3,2) + '-' +
     LEFT(CONVERT(varchar(7), datefield),4))
END as DesiredDate
于 2013-08-15T20:53:45.263 回答