我对datetime
和SQL Server感到困惑。
我有(例子)Aug 4 2011 12:00AM
如何将其转换为datetime
(或smalldatetime
)类型。
convert(datetime, 'Aug 4 2011 12:00AM')
编辑:它有效
感谢。
答案 0 :(得分:5)
这个 在SQL Server 2008上为我工作。
select convert(datetime, 'Aug 4 2011 12:00AM') as ConvertResult
ConvertResult
-------------
2011-08-04 00:00:00.000
正在发生的是隐式转换,但并不总是值得信赖。日期格式的格式说明符为100
,可在CAST and CONVERT docs的表格中找到。试试这个:
select convert(datetime, 'Aug 4 2011 12:00AM', 100) as ConvertResult
ConvertResult
-------------
2011-08-04 00:00:00.000
答案 1 :(得分:1)
你试过这种方式吗?
convert(datetime, 'Aug 4 2011 12:00AM', 120)
120用于样式格式化。
查看此链接以获取完整文档 http://msdn.microsoft.com/en-us/library/ms187928.aspx
答案 2 :(得分:1)
你可以稍微“按摩”一下数据:(警告:没有经过测试,但这些内容应该有效)。作为一个注释,如果没有其他方法可行,这是一种强力方法。
declare @datestring varchar(30);
set @datestring = 'Aug 4 2011 12:04AM';
select convert(datetime,
substring(@datestring, 8,4) + '-' +
case lower(left(@datestring, 3))
when 'jan' then '01'
when 'feb' then '02'
when 'mar' then '03'
when 'apr' then '04'
when 'may' then '05'
when 'jun' then '06'
when 'jul' then '07'
when 'aug' then '08'
when 'sep' then '09'
when 'oct' then '10'
when 'nov' then '11'
when 'dec' then '12'
end + '-' +
right('00' + ltrim(rtrim(substring(@datestring, 5, 2))), 2) + ' ' +
substring(@datestring, 13,50)
) as Converted;