如何将“mm / yyyy”varchar转换为datetime?

时间:2013-04-06 05:48:51

标签: sql-server-2008

我有一个以"mm/yyyy"格式存储的日期,其数据类型为varchar。

我希望以"mm/dd/yyyy"格式

获取日期

例如:4/2013存储在数据库中

我想要

30/4/2013

1 个答案:

答案 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);

这有点烦吗?好!首先以正确的方式存储日期。并且不要再将数据库视为以特定格式存储/呈现日期的地方 - 在必要时在客户端进行格式化,并且通常区域格式无论如何都是个坏主意,除非您的受众非常有限。