有一个日期字段,当月份 >=10 时,我需要将其从 mddyy 或 mmddyy(数字格式)转换为 mmddyy 日期格式。还没有在网上找到任何答案。
问问题
568 次
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 回答