计算员工的总分钟数

时间:2016-05-19 00:27:29

标签: sql-server

select top 10 DATEDIFF(minute,[clock_in],[clock_out]) AS TOTAL_MINS

获得以下错误

  

datediff函数导致溢出。日期部分的数量   分隔两个日期/时间实例太大。尝试使用datediff   用不太精确的日期部分。

4 个答案:

答案 0 :(得分:1)

即使SELECT DATEDIFF(MINUTE, '1753-01-01', '5836-01-01')不会导致int溢出并且比人命更长,请检查您的员工clock_inclock_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。

因此,它清楚地表明您的日期时间数据值包含一些无效数据。