2013-04-06 104 views
0

我有一个日期,其格式为"mm/yyyy",其数据类型为varchar。如何将“mm/yyyy”varchar转换为datetime?

我想日期"mm/dd/yyyy"格式

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

我想

30/4/2013 
+0

哪里'dd'部分去了..? – 2013-04-06 05:52:31

+1

那么你想要一个月的最后一天?你想输出作为一个日期或作为一个不明确格式的区域字符串?你不能拥有两个。 – 2013-04-06 11:30:23

+0

我希望月份的最后一个日期作为日期 – Girish 2013-04-06 12:52:04

回答

1
DECLARE @d VARCHAR(32) = '4/2013'; 

-- as a datetime 

SELECT DATEADD(DAY,-1,DATEADD(MONTH,1, 
    CONVERT(DATETIME,'1/'[email protected],103))); 

-- as a date 

SELECT CONVERT(DATE, DATEADD(DAY,-1,DATEADD(MONTH,1, 
    CONVERT(DATETIME,'1/'[email protected],103)))); 

-- as an ambiguously formatted regional string 

SELECT CONVERT(CHAR(10), DATEADD(DAY,-1,DATEADD(MONTH,1, 
    CONVERT(DATETIME,'1/'[email protected],103))),103); 

是恼人的?好!首先以正确的方式存储日期。并且不要将数据库视为以特定格式存储/呈现日期的地方 - 必要时在客户端进行格式设置,而且除非受众人数非常有限,否则通常采用区域格式是一个坏主意。

+0

CONVERT(CHAR(10),DATEADD(DAY,-1,DATEADD(MONTH,1,CONVERT(DATETIME,'1 /'+ @ d,103)),103)是工作,在上面的小变化,我纠正它,请检讨它谢谢 – Girish 2013-04-06 12:56:10

+0

对不起,在我的iPad上键入,不知道'1'去了哪里。 – 2013-04-06 13:03:54