【发布时间】:2020-03-23 20:09:30
【问题描述】:
我有以下查询以分钟为单位查找两个日期之间的差异。
SELECT DATEDIFF(MINUTE,'28.11.2019 09:23:41:202',GETDATE()) AS time_difference
但是,我得到了错误
无法将“28.11.2019 09:23:41:202”转换为时间戳 SQLCODE = -157,ODBC 3 状态 = "07006"
值 '28.11.2019 09:23:41:202' 是通过在上一个查询中使用 GETDATE() 函数获得的。 这里有什么问题?有什么帮助吗?
更新:
如果值“28.11.2019 09:23:41:202”更改为“2019.11.28”格式,则查询有效。如上所述,
值“'28.11.2019 09:23:41:202'”是通过在上一个查询中使用相同的函数 GETDATE() 获得的。
【问题讨论】:
-
请试试这个
SELECT DATEDIFF(MINUTE,'2019-11-27 08:55:12:564',GETDATE()) AS time_difference -
@jishansiddique 谢谢吉山..这行得通!但是,要获得 YYYY-MM-DD 格式的值,我需要做一些额外的转换。此外,日期“27.11.2019 08:55:12:564”是使用相同的 GETDATE() 函数获得的。
-
您的 SQL 客户端正在以某种方式格式化 getdate() 如果您通过 isql 运行它,您会看到类似于“Nov 28 2019 6:58AM”。使用 DD.MM.YYYY 格式很糟糕,因为根据区域设置,月份和年份可能会颠倒过来,并且会遇到语法问题。例如,在英国我们使用 DD.MM.YYYY,但在美国他们假设为 MM.DD.YYYY。