sql >> Databáze >  >> RDS >> Sqlserver

jak převést všechny sloupce datetime v expresní databázi SQL serveru 2005 s daty na UTC

Za předpokladu, že znáte posun mezi UTC a časovým pásmem, ve kterém jsou data uložena, je to docela jednoduché:

DECLARE @offset INT;
SET @offset = <offset>;
UPDATE table SET col = DATEADD(HOUR, @offset, col);

Všimněte si, že to může být negativní nebo pozitivní, nemám ponětí, na které straně Greenwiche jste.

Samozřejmě to bude složitější, pokud se nacházíte v časovém pásmu, kde platí letní čas; v tomto případě možná budete potřebovat rozsáhlejší řešení, jako je použití kalendářové tabulky. To je zvláště složité, pokud vaše data sahají dříve, než George Bush například změnil americká pravidla DST. Mám článek z dávné minulosti, který může být užitečný ; novější série je zde:

Také pokud některá z vašich dat spadají do tohoto okna mezi 12:00 a 2:00 v jarní den dopředu/dozadu, kdy si nikdy nejsem jistý, zda je správné je změnit, protože je den přechodu, nebo neměnit protože je před 2:00.




  1. Jak aktualizovat všechna data v tabulce

  2. Jak monitorovat PostgreSQL běžící uvnitř kontejneru Docker:Část první

  3. Alternativa k návrhu databáze s výčtovými sloupci, což vede ke špatnému výkonu

  4. Optimalizace SQL dotazu pro výpočet zůstatku účtu