我有一个数据集,其日期格式如下:
10/18/2007 8:00 A.M.
10/20/2007 10:00 A.M.
等。。
我在寻找一致的查询来将一组这种格式的 varchar 转换为日期时间以插入到日期时间列时时遇到了很多麻烦。 我已经尝试了许多转换样式(https://learn.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql 在这里找到(,但没有一种真正有效。
在 Sql Server 2012 及更高版本中:当转换失败时,每个都将返回null
而不是错误。
-
try_convert(datatype,val)
-
try_cast(val as datatype)
-
try_parse(val as datatype [using culture])
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
你只需要去掉句点,然后简单地转换
Select try_convert(datetime,replace('10/18/2007 8:00 A.M.','.',''))
返回
2007-10-18 08:00:00.000