Calcul du nombre total de minutes d'un employé

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

Obtenir l'erreur ci-dessous

La fonction datediff a entraîné un débordement. Le nombre de parties de date séparant deux instances date / heure est trop important. Essayez d'utiliser datediff avec une datepart less précise.

Même SELECT DATEDIFF(MINUTE, '1753-01-01', '5836-01-01') ne provoque pas le débordement int et beaucoup plus long que la vie humaine, vérifiez votre stockage des données clock_in et clock_out des employés.

La valeur de return de DATEDIFF est un integer. Si la valeur de return n'est pas dans la plage d'un integer, vous obtiendrez une erreur. Essayez la requête ci-dessous pour get des minutes.

  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 

Vous pouvez utiliser cette requête. Peut être son aide vous.

 select top 10 DATEDIFF(HOUR,[clock_in],[clock_out])*60 AS TOTAL_MINS 

Selon mon test, j'ai trouvé ci-dessous:

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, niveau 16, état 0, ligne 1 La fonction datediff a entraîné un débordement. Le nombre de parties de date séparant deux instances date / heure est trop important. Essayez d'utiliser datediff avec une datepart less précise.

Cela indique donc clairement que votre valeur de données datetime contient des données non valides.