在SQL中将非标准美国日期时间字符串转换为日期时间

时间:2017-04-07 16:08:55

标签: sql-server datetime sql-server-2012

我的数据集的日期格式如下:

10/18/2007   8:00 A.M.

10/20/2007  10:00 A.M.

等。

我在查找一致查询以将此格式的一组varchars转换为datetime以插入datetime列时遇到了很多麻烦。我尝试了很多CONVERT样式(在https://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql找到)但没有一个真正有用。

2 个答案:

答案 0 :(得分:1)

在Sql Server 2012及更高版本中:当转换失败而不是错误时,每个都会返回null

declare @str varchar(32) = '10/20/2007  10:00 A.M.'
select try_parse(replace(@str,'.M.','M') as datetime using 'EN-us')

返回:2007-10-20 10:00:00

rextester演示:http://rextester.com/KWCF9843

答案 1 :(得分:1)

您只需将句点删除,然后只需转换

即可
Select try_convert(datetime,replace('10/18/2007  8:00 A.M.','.',''))

返回

2007-10-18 08:00:00.000