【问题标题】:Converting a nonstandard US datetime string to datetime in SQL在 SQL 中将非标准美国日期时间字符串转换为日期时间
【发布时间】:2017-04-07 16:08:55
【问题描述】:

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

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),但没有一个真正有效。

【问题讨论】:

  • 您尝试了哪些转换?只是说 many 并没有那么有帮助。哪个?

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


【解决方案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

【讨论】:

    【解决方案2】:

    你只需要去掉句号,然后简单地转换

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

    返回

    2007-10-18 08:00:00.000
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-12
      • 2015-09-17
      • 1970-01-01
      • 2019-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-24
      相关资源
      最近更新 更多