在SQL

问题描述:

转换非标准美国时间字符串转换为datetime我与格式日期的数据集如下:在SQL

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

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

等。

我有很多的麻烦找一致查询将这种格式的一组变量转换为日期时间插入到日期时间列中。我已经尝试了许多CONVERT风格(在这里找到https://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql),但没有一个真的有效。

+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

你只需要剥离出来的时期,然后简单地转换

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

返回

2007-10-18 08:00:00.000