T-SQL String to DateTime-conversion

时间:2011-07-08 11:45:48

标签: sql tsql sql-server-2008-r2

我需要将以下格式的字符串值转换为DateTime:

2042-04
2011-01

有一种简单的方法吗?我试过CASTCONVERT没有太多运气。

谢谢!

4 个答案:

答案 0 :(得分:6)

尝试在其末尾添加“-01”,然后进行强制转换或转换

答案 1 :(得分:2)

declare @S varchar(7)
set @S = '2042-04'

select cast(stuff(@S, 5, 1, '')+'01' as datetime)

YYYYMMDD是一种安全格式,与SET DATEFORMAT无关。 YYYY-MM-DD不是。 http://www.sommarskog.se/wishlist.html#YYYYMMDD

答案 2 :(得分:0)

SELECT CAST('2011-01-01' AS DATETIME)
SELECT CONVERT(DATE , '2011-01-01')

您似乎需要在字符串中添加“日期”。

答案 3 :(得分:0)

Declare @Table Table
(
    ColDateTime Varchar(100)
)
Insert into @Table
Select '2042-04' UNION ALL
Select '2011-01'

Select ColDateTime As VarcharCol,
Cast(
    substring(ColDateTime,0,charindex('-',ColDateTime))+substring(ColDateTime,charindex('-',ColDateTime)+1,len(ColDateTime))+'01'
As DateTime) As DateTimeCol
from @Table