Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL:Използване на DATEADD с bigints

Просто направете проблемния DATEADD на две стъпки, като се започне с по-груба единица за време (секунди, минути, часове и т.н.), след което се върне обратно към фино зърнеста единица за остатъка.

Избягвайте обаче да преминавате към ниво седмици и месеци, тъй като това ще изисква действителни календарни изчисления и бихме предпочели системата да се справи с това.

Примерът по-долу трябва да изчисли начално време при (евентуално) голяма текуща продължителност в милисекунди.

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Създаване на глобална статична променлива в SQL Server?

  2. Цикъл върху набор от записи в SQL Server

  3. SQL Server ROWCOUNT_BIG()

  4. Достъп до колони на таблица по индекс вместо име в съхранена процедура на SQL Server

  5. Добавяне на намек за заявка при извикване на функция с таблична стойност