【问题标题】:Time difference between two varchar datetime两个 varchar datetime 之间的时间差
【发布时间】:2018-10-02 13:01:52
【问题描述】:

我想使用 datediff 函数来获取 varchar 格式的两个日期时间值之间的时间差(以秒为单位)。以下是我的查询,它给了我错误。

DATEDIFF(second, CONVERT(Datetime, data_deviceTransactions_createdTime, 120), CONVERT(Datetime, data_deviceTransactions_updatedTime, 120))

data_deviceTransactions_createdTime 和 data_deviceTransactions_updatedTime 是 varchar 值,

【问题讨论】:

  • 请给我错误信息。
  • 错误信息是 - 从字符串转换日期和/或时间时转换失败
  • 你传入“data_deviceTransactions_createdTime”的日期时间类型
  • 例如:- 2018 年 9 月 20 日星期四 05:54:30 GMT。这是在 varchar 中。
  • "varchar 格式的日期时间值。"你的问题就在那里。不要将datetime 值存储为varchar。将它们存储为 datetime2 并放弃您目前遇到的所有问题。

标签: sql sql-server


【解决方案1】:

试试这个:

CONVERT(DATETIME, SUBSTRING('Thu, 20 Sep 2018 05:54:30 GMT', 5, LEN('Thu, 20 Sep 2018 05:54:30 GMT') - 8), 113) 

这应该返回 2018-09-20 05:54:30.000

SELECT
    DATEDIFF(second, CONVERT(DATETIME, SUBSTRING(data_deviceTransactions_createdTime, 5, LEN(data_deviceTransactions_createdTime) - 8), 113), CONVERT(DATETIME, SUBSTRING(data_deviceTransactions_updatedTime, 5, LEN(data_deviceTransactions_updatedTime) - 8), 113))

【讨论】:

    猜你喜欢
    • 2013-08-31
    • 1970-01-01
    • 2013-12-29
    • 2013-12-03
    • 2018-05-04
    • 1970-01-01
    • 2018-04-18
    • 2021-08-07
    相关资源
    最近更新 更多