sql >> Base de Datos >  >> RDS >> Sqlserver

SQL:uso de DATEADD con bigints

Solo haz el problemático DATEADD en dos pasos, comenzando con una unidad de tiempo más gruesa (segundos, minutos, horas, etc.), y luego volviendo a la unidad de grano fino para el resto.

Sin embargo, evite ir al nivel de semanas y meses, ya que eso requeriría cálculos de calendario reales y preferiríamos que el sistema manejara eso.

El siguiente ejemplo necesita calcular una hora de inicio dada una (posiblemente) gran duración actual en milisegundos.

-- 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()))