我有一个以"mm/yyyy"
格式存储的日期,其数据类型为varchar。
我希望以"mm/dd/yyyy"
格式
例如:4/2013
存储在数据库中
我想要
30/4/2013
答案 0 :(得分:2)
DECLARE @d VARCHAR(32) = '4/2013';
-- as a datetime
SELECT DATEADD(DAY,-1,DATEADD(MONTH,1,
CONVERT(DATETIME,'1/'+@d,103)));
-- as a date
SELECT CONVERT(DATE, DATEADD(DAY,-1,DATEADD(MONTH,1,
CONVERT(DATETIME,'1/'+@d,103))));
-- as an ambiguously formatted regional string
SELECT CONVERT(CHAR(10), DATEADD(DAY,-1,DATEADD(MONTH,1,
CONVERT(DATETIME,'1/'+@d,103))),103);
这有点烦吗?好!首先以正确的方式存储日期。并且不要再将数据库视为以特定格式存储/呈现日期的地方 - 在必要时在客户端进行格式化,并且通常区域格式无论如何都是个坏主意,除非您的受众非常有限。