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

Efektywne konwertowanie dat między czasem UTC a czasem lokalnym (tj. PST) w SQL 2005

Utwórz dwie tabele, a następnie dołącz do nich, aby przekonwertować zapisane daty GMT na czas lokalny:

TimeZones     e.g.
---------     ----
TimeZoneId    19
Name          Eastern (GMT -5)
Offset        -5

Utwórz tabelę czasu letniego i wypełnij ją jak największą ilością informacji (lokalne przepisy zmieniają się cały czas, więc nie ma możliwości przewidzenia, jak dane będą wyglądać w przyszłości w latach)

DaylightSavings
---------------
TimeZoneId    19
BeginDst      3/9/2008 2:00 AM
EndDst        11/2/2008 2:00 AM

Dołącz do nich w ten sposób:

inner join  TimeZones       tz on x.TimeZoneId=tz.TimeZoneId
left join   DaylightSavings ds on tz.TimeZoneId=ds.LocalTimeZone 
    and x.TheDateToConvert between ds.BeginDst and ds.EndDst

Konwertuj daty w ten sposób:

dateadd(hh, tz.Offset + 
    case when ds.LocalTimeZone is not null 
    then 1 else 0 end, TheDateToConvert)


  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 pobrać ułamki dziesiętne podczas zaokrąglania średniej w SQL?

  2. Jak zwrócić listę zdarzeń wyzwalających w SQL Server

  3. Czy MS-SQL AND/OR jest warunkowy (wykonywanie oceny zwarcia)?

  4. SQL Server 2005 Używanie DateAdd do dodawania dnia do daty

  5. Dowiedz się, jak korzystać z programu SQL Server Management Studio