select top 10 DATEDIFF(minute,[clock_in],[clock_out]) AS TOTAL_MINS
获得以下错误
datediff函数导致溢出。日期部分的数量 分隔两个日期/时间实例太大。尝试使用datediff 用不太精确的日期部分。
答案 0 :(得分:1)
即使SELECT DATEDIFF(MINUTE, '1753-01-01', '5836-01-01')
不会导致int溢出并且比人命更长,请检查您的员工clock_in
和clock_out
数据的存储空间。
答案 1 :(得分:0)
DATEDIFF
的返回值是一个整数。如果返回值不在整数范围内,那么您将收到错误。请尝试以下查询以获取分钟数。
select TOTAL_HRS*60 + DATEDIFF(mi,DATEADD(hh,CAST(TOTAL_HRS as int),Clock_in),clock_out) as Total_Mins
from
(select top 10 DATEDIFF(hh,[clock_in],[clock_out]) AS TOTAL_HRS,clock_in,clock_out
from tab) t
答案 2 :(得分:0)
您可以使用此查询。可能会帮助你。
select top 10 DATEDIFF(HOUR,[clock_in],[clock_out])*60 AS TOTAL_MINS
答案 3 :(得分:0)
根据我的测试,我在下面找到了:
SELECT DATEDIFF(MINUTE,'0001-01-01 00:00:00.000','4083-12-31 00:00:00.000') AS TOTAL_MINS
<强> TOTAL_MINS 强>
2147124540
SELECT DATEDIFF(MINUTE,'0001-01-01 00:00:00.000','4084-05-19 00:00:00.000') AS TOTAL_MINS
<强> TOTAL_MINS 强>
Msg 535,Level 16,State 0,Line 1 日期函数导致溢出。分隔两个日期/时间实例的日期部分数量太大。尝试使用具有不太精确的日期部分的datediff。
因此,它清楚地表明您的日期时间数据值包含一些无效数据。