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

Ефективно преобразуване на дати между UTC и местно (т.е. PST) време в SQL 2005

Създайте две таблици и след това се присъединете към тях, за да конвертирате съхранените GMT ​​дати в местно време:

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

Създайте таблицата за лятното часово време и я попълнете с възможно най-много информация (местните закони се променят през цялото време, така че няма начин да се предвиди как ще изглеждат данните години в бъдещето)

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

Присъединете се към тях така:

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

Преобразувайте дати по следния начин:

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. Нечислови знаци, които връщат положително при използване на ISNUMERIC() в SQL Server

  2. Упътване:Настройка на висока наличност на SQL Server

  3. T-SQL:Изтриване на всички дублиращи се редове, но запазване на един

  4. TIMEFROMPARTS() Примери в SQL Server (T-SQL)

  5. Условна клауза WHERE в SQL Server