Musím si dát pozor na funkce pracující s datem. Funkce pro zobrazení aktuálního data/času vrací moji aktuální hodnotu.
Ale jakmile chci část dne, je to špatně.
SELECT getdate(), current_timestamp();
-- vrací 2022-06-29 12:23:46.531
SELECT HOUR (getdate()),DATE_PART(HOUR, getdate());
-- vrací 3 místo 12
-- celé datum/čas pak vypadá:
SELECT year(getdate()) || '-' || month(getdate()) || '-' || day(getdate()) || ' ' || hour(getdate()) || ':' || minute(getdate());
-- vrací 2022-6-29 3:25
Bere zjevně datum/čas z jiné timezone, u mě konkrétně America/Los_Angeles.
show parameters like 'timezone%';
--vrací 'America/Los_Angeles'
Dost mě to zaskočilo, protože tyto funkce beru jako že se provede vnitřní funkce a na výsledek se aplikuje vnější funkce.
„Oprava“ je jednoduchá – na začátku scriptu nastavit moji timezone:
ALTER SESSION SET TIMEZONE = ‚Europe/Warsaw‘
ALTER SESSION SET TIMEZONE = 'Europe/Warsaw';
--nebo rovnou
ALTER SESSION SET WEEK_START = 1,WEEK_OF_YEAR_POLICY = 0,TIMEZONE = 'Europe/Warsaw';
Napsat komentář
Pro přidávání komentářů se musíte nejdříve přihlásit.