0

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

我想以"mm/dd/yyyy"格式获取日期

eg:4/2013存储在数据库中

我想

30/4/2013
4

1 回答 1

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

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

于 2013-04-06T11:33:18.267 回答