Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

SQL :Utilisation de DATEADD avec des bigints

Faites simplement le problème DATEADD en deux étapes, en commençant par une unité de temps plus grossière (secondes, minutes, heures, etc.), puis en revenant à une unité à grain fin pour le reste.

Évitez cependant d'aller au niveau des semaines et des mois car cela nécessiterait des calculs de calendrier réels et nous préférerions que le système gère cela.

L'exemple ci-dessous nécessite de calculer une heure de début en fonction d'une durée de courant (éventuellement) importante en millisecondes.

-- large durations can overflow the integer argument needed for DATEADD

-- so do as two steps subtracting minutes (60000ms) and then remaining milliseconds.

DATEADD(ms, -large_duration_ms%60000, DATEADD(minute, -large_duration_ms/60000, GETDATE()))