Введение в типы данных для даты и времени

Анализ временных рядов в PostgreSQL

Jasmin Ludolf

Content Developer, DataCamp

Типы данных для даты и времени

  • Типы данных Date, Time, DateTime

В PostgreSQL:

  • DATE : только дата
  • TIME : время без часового пояса
  • TIMESTAMP : дата и время без часового пояса
  • TIMESTAMPTZ : TIMESTAMP с часовым поясом
  • INTERVAL : промежуток между двумя моментами

Иллюстрация календаря и циферблата часов.

Анализ временных рядов в PostgreSQL

Значения даты и времени

  • DATE : YYYY-MM-DD (международный стандарт ISO 8601)
  • TIME : HH:MM:SS (секунды могут быть дробными, 12- или 24-часовой формат)
  • TIMESTAMP : YYYY-MM-DD HH:MM:SS
  • TIMESTAMPTZ : YYYY-MM-DD HH:MM:SS+/-HH (+01:00 или CET)
  • INTERVAL : пример ввода — 1 02:30:04
    • Интервал: 1 день, 2 часа, 30 минут, 4 секунды
Анализ временных рядов в PostgreSQL

Дата и время в таблице

CREATE TABLE timetable (
    date_info DATE,

time_info TIMESTAMP,
time_with_zone TIMESTAMPTZ,
interval_length INTERVAL);
INSERT INTO timetable(
    date_info,

time_info,
time_with_zone,
interval_length)
VALUES ( 'January 23 2013',
'2023-01-20 18:00:00',
'2023-01-20 18:00:00 EST',
'1 02:03:04');
Анализ временных рядов в PostgreSQL

Дата и время в таблице

 

SELECT *
FROM timetable;

 

| date_info  | time_info           | time_with_zone            | interval_length |
| ---------- | ------------------- | ------------------------- | --------------- |
| 2023-01-20 | 2023-01-20 18:00:00 | 2023-01-20 00:00:00+01:00 | 1 day, 2:03:04  |
Анализ временных рядов в PostgreSQL

Неполные или некорректные данные

INSERT INTO timetable(time_info)
VALUES ('2020-02-20 12:00:00');
SELECT *
FROM timetable;
| date_info  | time_info           | time_with_zone            | interval_length |
| ---------- | ------------------- | ------------------------- | --------------- |
| 2023-01-20 | 2023-01-20 18:00:00 | 2023-01-20 00:00:00+01:00 | 1 day, 2:03:04  |
| null.      | 2020-02-20 12:00:00 | null                      | null            |
Анализ временных рядов в PostgreSQL

Неполные или некорректные данные

INSERT INTO timetable(time_info)
VALUES ('2020-02-20 02:00:00 EST');
SELECT *
FROM timetable;
| date_info  | time_info           | time_with_zone            | interval_length |
| ---------- | ------------------- | ------------------------- | --------------- |
| 2023-01-20 | 2023-01-20 18:00:00 | 2023-01-20 00:00:00+01:00 | 1 day, 2:03:04  |
| null.      | 2020-02-20 02:00:00 | null                      | null            |
Анализ временных рядов в PostgreSQL

Unix-время

  • Unix-время : секунды, прошедшие с начала эпохи Unix
  • Эпоха Unix : 1 января 1970 года, 00:00:00 UTC
|unix_time |
|----------|
|1483444800|

Это 3 января 2017 года!

Анализ временных рядов в PostgreSQL

Давайте потренируемся!

Анализ временных рядов в PostgreSQL

Preparing Video For Download...