A Day Has Only 24±1 Hours Miroslav Š edivý eumiro 1 / 71
A Day Has Only 24±1 Hours eumiro soluteTech 2 / 71
A Day Has Only 24±1 Hours check the time eumiro soluteTech 3 / 71
A Day Has Only 24±1 Hours check the time don't check the time too often eumiro soluteTech 4 / 71
A Day Has Only 24±1 Hours check the time don't check the time too often check what your government does eumiro soluteTech 5 / 71
Miroslav Š edivý [ ˈ m ɪ r ɔ sla ʋ ˈʃɛɟɪ vi ː ] eumiro soluteTech 6 / 71
Miroslav Š edivý [ ˈ m ɪ r ɔ sla ʋ ˈʃɛɟɪ vi ː ] born in Bratislava, Czechoslovakia ( TZ=Europe/Bratislava ) eumiro soluteTech 7 / 71
Miroslav Š edivý [ ˈ m ɪ r ɔ sla ʋ ˈʃɛɟɪ vi ː ] born in Bratislava, Czechoslovakia ( TZ=Europe/Bratislava ) M.Sc. at INSA Lyon, France ( TZ=Europe/Paris ) eumiro soluteTech 8 / 71
Miroslav Š edivý [ ˈ m ɪ r ɔ sla ʋ ˈʃɛɟɪ vi ː ] born in Bratislava, Czechoslovakia ( TZ=Europe/Bratislava ) M.Sc. at INSA Lyon, France ( TZ=Europe/Paris ) Senior Software Developer at solute GmbH, Karlsruhe, Germany ( TZ=Europe/Berlin ) eumiro soluteTech 9 / 71
Miroslav Š edivý [ ˈ m ɪ r ɔ sla ʋ ˈʃɛɟɪ vi ː ] born in Bratislava, Czechoslovakia ( TZ=Europe/Bratislava ) M.Sc. at INSA Lyon, France ( TZ=Europe/Paris ) Senior Software Developer at solute GmbH, Karlsruhe, Germany ( TZ=Europe/Berlin ) The whole life in the CE(S)T! eumiro soluteTech 10 / 71
eumiro soluteTech 11 / 71
Friday, 28th June 2019 14:03 CEST (Rapperswil, Switzerland) eumiro soluteTech 12 / 71
CREATE TABLE events ( id SERIAL, occurred_on TIMESTAMP ); eumiro soluteTech 13 / 71
CREATE TABLE events ( id SERIAL, occurred_on TIMESTAMP ); INSERT INTO events (occurred_on) VALUES (NOW()); id | occurred_on ----+--------------------- 1 | 2019-06-28 14:03:00 eumiro soluteTech 14 / 71
CREATE TABLE events ( id SERIAL, occurred_on TIMESTAMP ); INSERT INTO events (occurred_on) VALUES (NOW()); id | occurred_on ----+--------------------- 1 | 2019-06-28 14:03:00 INSERT INTO events (occurred_on) VALUES (NOW()); id | occurred_on ----+--------------------- 1 | 2019-06-28 14:03:00 2 | 2019-06-28 12:03:01 eumiro soluteTech 15 / 71
CREATE TABLE events ( id SERIAL, occurred_on TIMESTAMP ); INSERT INTO events (occurred_on) VALUES (NOW()); id | occurred_on ----+--------------------- 1 | 2019-06-28 14:03:00 INSERT INTO events (occurred_on) VALUES (NOW()); id | occurred_on ----+--------------------- 1 | 2019-06-28 14:03:00 2 | 2019-06-28 12:03:01 SET TIMEZONE TO 'Europe/Zurich'; SET TIMEZONE TO 'UTC'; eumiro soluteTech 16 / 71
CREATE TABLE events ( id SERIAL, occurred_on TIMESTAMP WITH TIME ZONE ); eumiro soluteTech 17 / 71
CREATE TABLE events ( id SERIAL, occurred_on TIMESTAMP WITH TIME ZONE ); SET TIMEZONE TO 'Europe/Zurich'; INSERT INTO events (occurred_on) VALUES (NOW()); id | occurred_on ----+------------------------ 1 | 2019-06-28 14:03:00+02 eumiro soluteTech 18 / 71
CREATE TABLE events ( id SERIAL, occurred_on TIMESTAMP WITH TIME ZONE ); SET TIMEZONE TO 'Europe/Zurich'; INSERT INTO events (occurred_on) VALUES (NOW()); id | occurred_on ----+------------------------ 1 | 2019-06-28 14:03:00+02 SET TIMEZONE TO 'UTC'; INSERT INTO events (occurred_on) VALUES (NOW()); id | occurred_on ----+------------------------ 1 | 2019-06-28 12:03:00+00 2 | 2019-06-28 12:03:01+00 eumiro soluteTech 19 / 71
CREATE TABLE events ( id SERIAL, occurred_on TIMESTAMP WITH TIME ZONE ); SET TIMEZONE TO 'Europe/Zurich'; INSERT INTO events (occurred_on) VALUES (NOW()); id | occurred_on ----+------------------------ 1 | 2019-06-28 14:03:00+02 SET TIMEZONE TO 'UTC'; INSERT INTO events (occurred_on) VALUES (NOW()); id | occurred_on ----+------------------------ 1 | 2019-06-28 12:03:00+00 2 | 2019-06-28 12:03:01+00 id | occurred_on ----+------------------------ 1 | 2019-06-28 14:03:00+02 2 | 2019-06-28 14:03:01+02 eumiro soluteTech 20 / 71
SELECT '2019-06-28 14:03:00 Europe/Zurich'::TIMESTAMPTZ; -- 2019-06-28 14:03:00+02 eumiro soluteTech 21 / 71
SELECT '2019-06-28 14:03:00 Europe/Zurich'::TIMESTAMPTZ; -- 2019-06-28 14:03:00+02 SELECT '2019-06-28 14:03:00 CET'::TIMESTAMPTZ; -- 2019-06-28 15:03:00+02 eumiro soluteTech 22 / 71
SELECT '2019-06-28 14:03:00 Europe/Zurich'::TIMESTAMPTZ; -- 2019-06-28 14:03:00+02 SELECT '2019-06-28 14:03:00 CET'::TIMESTAMPTZ; -- 2019-06-28 15:03:00+02 SELECT '2019-06-28 14:03:00 CEST'::TIMESTAMPTZ; -- 2019-06-28 14:03:00+02 eumiro soluteTech 23 / 71
SELECT '2019-06-28 14:03:00 Europe/Zurich'::TIMESTAMPTZ; -- 2019-06-28 14:03:00+02 SELECT '2019-06-28 14:03:00 CET'::TIMESTAMPTZ; -- 2019-06-28 15:03:00+02 SELECT '2019-06-28 14:03:00 CEST'::TIMESTAMPTZ; -- 2019-06-28 14:03:00+02 SELECT '2019-06-28 14:03:00 Europe/Zurich'::TIMESTAMPTZ; -- 2019-06-28 14:03:00+02 SELECT '2019-12-28 14:03:00 Europe/Zurich'::TIMESTAMPTZ; -- 2019-12-28 14:03:00+01 eumiro soluteTech 24 / 71
SELECT '2019-06-28 14:03:00 Europe/Zurich'::TIMESTAMPTZ; -- 2019-06-28 14:03:00+02 SELECT '2019-06-28 14:03:00 CET'::TIMESTAMPTZ; -- 2019-06-28 15:03:00+02 SELECT '2019-06-28 14:03:00 CEST'::TIMESTAMPTZ; -- 2019-06-28 14:03:00+02 SELECT '2019-06-28 14:03:00 Europe/Zurich'::TIMESTAMPTZ; -- 2019-06-28 14:03:00+02 SELECT '2019-12-28 14:03:00 Europe/Zurich'::TIMESTAMPTZ; -- 2019-12-28 14:03:00+01 SELECT COUNT(*) FROM pg_timezone_names; -- 1187 eumiro soluteTech 25 / 71
SELECT '2019-06-28 14:03:00 Europe/Zurich'::TIMESTAMPTZ; -- 2019-06-28 14:03:00+02 SELECT '2019-06-28 14:03:00 CET'::TIMESTAMPTZ; -- 2019-06-28 15:03:00+02 SELECT '2019-06-28 14:03:00 CEST'::TIMESTAMPTZ; -- 2019-06-28 14:03:00+02 SELECT '2019-06-28 14:03:00 Europe/Zurich'::TIMESTAMPTZ; -- 2019-06-28 14:03:00+02 SELECT '2019-12-28 14:03:00 Europe/Zurich'::TIMESTAMPTZ; -- 2019-12-28 14:03:00+01 SELECT COUNT(*) FROM pg_timezone_names; -- 1187 SELECT * FROM pg_timezone_names WHERE name LIKE '%Zurich%'; name | abbrev | utc_offset | is_dst ---------------------+--------+------------+-------- Europe/Zurich | CEST | 02:00:00 | t posix/Europe/Zurich | CEST | 02:00:00 | t eumiro soluteTech 26 / 71
SELECT NOW(); -- 2019-06-28 14:03:00+02 eumiro soluteTech 27 / 71
SELECT NOW(); -- 2019-06-28 14:03:00+02 SELECT NOW() AT TIME ZONE 'Europe/Zurich'; -- 2019-06-28 14:03:00 eumiro soluteTech 28 / 71
SELECT NOW(); -- 2019-06-28 14:03:00+02 SELECT NOW() AT TIME ZONE 'Europe/Zurich'; -- 2019-06-28 14:03:00 SELECT NOW() AT TIME ZONE 'Asia/Tokyo'; -- 2019-06-28 21:03:00 eumiro soluteTech 29 / 71
SELECT NOW(); -- 2019-06-28 14:03:00+02 SELECT NOW() AT TIME ZONE 'Europe/Zurich'; -- 2019-06-28 14:03:00 SELECT NOW() AT TIME ZONE 'Asia/Tokyo'; -- 2019-06-28 21:03:00 SELECT NOW() AT TIME ZONE 'Asia/Tokyo' AT TIME ZONE 'Asia/Tokyo'; -- 2019-06-28 14:03:00+02 eumiro soluteTech 30 / 71
SELECT NOW(); -- 2019-06-28 14:03:00+02 SELECT NOW() AT TIME ZONE 'Europe/Zurich'; -- 2019-06-28 14:03:00 SELECT NOW() AT TIME ZONE 'Asia/Tokyo'; -- 2019-06-28 21:03:00 SELECT NOW() AT TIME ZONE 'Asia/Tokyo' AT TIME ZONE 'Asia/Tokyo'; -- 2019-06-28 14:03:00+02 SELECT NOW() AT TIME ZONE 'Asia/Tokyo' AT TIME ZONE 'Europe/Zurich'; -- 2019-06-28 21:03:00+02 eumiro soluteTech 31 / 71
SELECT NOW(); -- 2019-06-28 14:03:00+02 eumiro soluteTech 32 / 71
SELECT NOW(); -- 2019-06-28 14:03:00+02 SELECT NOW(); -- 2019-06-28 14:03:00+02 eumiro soluteTech 33 / 71
SELECT NOW(); -- 2019-06-28 14:03:00+02 SELECT NOW(); -- 2019-06-28 14:03:00+02 SELECT NOW(); -- 2019-06-28 14:03:00+02 eumiro soluteTech 34 / 71
SELECT NOW(); -- 2019-06-28 14:03:00+02 SELECT NOW(); -- 2019-06-28 14:03:00+02 SELECT NOW(); -- 2019-06-28 14:03:00+02 TRANSACTION_TIMESTAMP() NOW() STATEMENT_TIMESTAMP() CLOCK_TIMESTAMP() eumiro soluteTech 35 / 71
SELECT NOW(); -- 2019-06-28 14:03:00+02 SELECT NOW(); -- 2019-06-28 14:03:00+02 SELECT NOW(); -- 2019-06-28 14:03:00+02 TRANSACTION_TIMESTAMP() NOW() STATEMENT_TIMESTAMP() CLOCK_TIMESTAMP() SELECT CLOCK_TIMESTAMP(), CLOCK_TIMESTAMP(); clock_timestamp | clock_timestamp -------------------------------+------------------------------- 2019-06-28 14:03:00.000000+02 | 2019-06-28 14:03:00.000001+02 eumiro soluteTech 36 / 71
Recommend
More recommend