【问题标题】:Identify date format SQL Server识别日期格式 SQL Server
【发布时间】:2019-01-08 07:07:40
【问题描述】:

我有很多列的时间戳采用以下nvarchar 格式“2016-11-22T20:16:32.573000Z”或“yyyy-MM-ddThh:mm:ss.[sss]Z”,我需要将列类型转换为日期和时间格式。

我知道有很多关于在 SQL Server (Azure) 中使用 CASTCONVERT 将字符串转换为日期时间的问题。但我似乎无法识别正确的风格:

CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

格式看起来像 ISO 8601 风格,但例如样式编号 126 和 127 不起作用。那么我应该使用哪种样式才能成功转换列?

【问题讨论】:

    标签: sql sql-server azure datetime-format


    【解决方案1】:

    这种格式是明确的,但精度位数比 datetime 所能容纳的要多。

    CONVERT(datetime2,'2016-11-22T20:16:32.573000Z') 可以在不指定样式的情况下正常工作,无论如何你应该在新工作中避免使用datetime。 (此时指定样式 126 或 127 也可以,但没必要)

    【讨论】:

    • 是的,这似乎可以解决问题。简要了解了 datetime2 数据类型,据我了解,它确实应该是上述日期时间的首选。
    【解决方案2】:

    不知道这样的更新 SQL 语句是否有助于填充新的日期字段和新的时间字段:

    SUBSTRING(MyLongDateTimeStringField,1,10) AS MyNewDateField,
    SUBSTRING(MyLongDateTimeStringField,12,8) AS MyNewTimeField
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-06
      • 2010-12-14
      • 2017-05-12
      相关资源
      最近更新 更多