【发布时间】:2018-01-12 16:05:06
【问题描述】:
SELECT
CONVERT(BIGINT, DATEDIFF(ss, '1970-01-01 00:00:00', replogindatetime)) AS login,
CONVERT(BIGINT, DATEDIFF(ss, '1970-01-01 00:00:00', replogoutdatetime)) AS logout
FROM
#Table
RepLoginDateTime & RepLogoutDateTime 是 SQL Server datetime 数据类型中的 2 列,我必须将其转换为纪元时间戳,但出现此错误:
消息 535,第 16 级,状态 0,第 23 行
datediff 函数导致溢出。分隔两个日期/时间实例的日期部分的数量太大。尝试将 datediff 与不太精确的日期部分一起使用。
我使用的是 SQL Server 2008
【问题讨论】:
-
您想要自纪元以来的秒数?你能用分钟代替吗?
-
在这里使用 convert 没有意义。 Datediff 总是返回 int。 Datediff 的结果超出 int 范围。所以你得到这个错误
-
对于毫秒,startdate 和 enddate 之间的最大差异是 24 天 20 小时 31 分钟和 23.647 秒。
标签: sql sql-server datetime