Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

SQL:Używanie DATEADD z bigintami

Po prostu wykonaj problematyczne DATEADD w dwóch krokach, zaczynając od grubszej jednostki czasu (sekundy, minuty, godziny itp.), a następnie przechodząc z powrotem do drobnoziarnistej jednostki czasu dla reszty.

Unikaj jednak wchodzenia na poziom tygodni i miesięcy, ponieważ wymagałoby to rzeczywistych obliczeń kalendarza, a wolelibyśmy, aby system sobie z tym poradził.

Poniższy przykład wymaga obliczenia czasu rozpoczęcia przy (prawdopodobnie) dużym czasie trwania prądu w milisekundach.

-- 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. Jak czytać i analizować plany wykonania SQL Server

  2. Procedura składowana, która eksportuje dane do plików csv eksportuje tylko do jednego pliku

  3. Najlepsze podejście do obliczania sum — aktualizacja dla SQL Server 2012

  4. Jak programowo utworzyć pełną kopię zapasową bazy danych SQL Server 2008 w żądanym folderze?

  5. Pobierz wartość kolumny z nazwy kolumny ciągu sql