Аналіз часових рядів у PostgreSQL
Jasmin Ludolf
Content Developer, DataCamp
TIMESTAMP : дата й час без часового поясу
TIMESTAMPTZ : дата й час із часовим поясом

SELECT * FROM pg_timezone_names;
| name |abbrev|utc_offset|is_dst|
|------------------|------|----------|------|
|Africa/Abidjan |GMT | 00:00:00|false |
|Africa/Accra |GMT | 00:00:00|false |
|Africa/Addis_Ababa|EAT | 3:00:00|false |
...
is_dst : чи діє в локації перехід на літній часSHOW TIMEZONE;
|TimeZone |
|---------------|
|Europe/Brussels|
datetimes є два поля:datetime : TIMESTAMPdatetimetz : TIMESTAMPTZINSERT INTO datetimes (datetime, datetimetz)
VALUES('2023-01-03 12:00:00','2023-01-03 12:00:00');
|datetime |datetimetz |
|-------------------|-------------------------|
|2023-01-03 12:00:00|2023-01-03 12:00:00+01:00|
pg_typeof(field_name): перевірити тип даних поляSELECT
pg_typeof(datetime) AS "type of(datetime)",
pg_typeof(datetimetz) AS "type of(datetimetz)"
FROM datetimes;
|type of(datetime) |type of(datetimetz) |
|---------------------------|------------------------|
|timestamp without time zone|timestamp with time zone|
INSERT INTO datetimes (datetime, datetimetz)
VALUES('2023-01-03 12:00:00+00','2023-01-03 12:00:00+00');
SELECT * FROM datetimes;
|datetime |datetimetz |
|-------------------|-------------------------|
|2023-01-03 12:00:00|2023-01-03 12:00:00+01:00|
|2023-01-03 12:00:00|2023-01-03 13:00:00+01:00|
AT TIME ZONE: додати, змінити або прибрати інформацію про часовий поясTIMESTAMP на TIMESTAMPTZ і навпакиДодавання часового поясу:
SELECT
TIMESTAMP '2020-12-31 23:59:59' AT TIME ZONE 'Europe/London' AS added;
|added |
|-------------------------|
|2021-01-01 00:59:59+01:00|
Цей запит: інтерпретує мітку часу, створює TIMESTAMPTZ, показує значення за замовчуванням
SELECT
'2020-12-31 23:59:59+00'::TIMESTAMPTZ AT TIME ZONE 'Europe/Paris'
AS shifted;
|shifted |
|-------------------|
|2021-01-01 00:59:59|
Цей запит: зсуває мітку часу до потрібного поясу, прибирає позначення часового поясу
Аналіз часових рядів у PostgreSQL