Дата и время в PostgreSQL. Часть 1
Пересказ статьи Shivayan Mukherjee. PostgreSQL Date And Time Part 1
В этой статье рассматриваются наиболее часто используемые в PostgreSQL функции даты и времени, которые позволяют эффективно работать со значениями даты и времени.
Age()
В бизнес-сценариях, когда нам требуется вычислить возраст человека, стаж работы сотрудников, год обучения в школе/вузе и т.д., мы можем использовать функцию Age() для решения подобных задач. Базовый синтаксис функции:
select AGE(timestamp,timestamp);
Select AGE(timestamp);
В первом примере функция AGE() принимает два значения TIMESTAMP в формате YYY-MM-DD. Второй аргумент вычитается из первого и возвращаемым результатом является интервал.
Во второй синтаксической форме, когда передается только один аргумент TIMESTAMP, он вычитается из текущей даты.
Вот несколько примеров с результатами вычислений:
SELECT AGE('2021-01-01','2018-10-24');

SELECT AGE(timestamp '1989-03-09');

CURRENT_DATE
Функция CURRENT_DATE возвращает текущую дату. Эта функция не имеет аргумента. Синтаксис:
SELECT CURRENT_DATE;

Функция CURRENT_DATE обычно используется как значение по умолчанию для столбца. В качестве примера рассмотрим следующий сценарий:
CREATE TABLE registration(
student_id serial PRIMARY KEY,
student_name varchar(255) NOT NULL,
registration_date DATE DEFAULT CURRENT_DATE
);
В данной таблице значение столбца 'registration_date' будет определяться функцией CURRENT_DATE. Давайте вставим запись в таблицу, чтобы посмотреть, как это работает.
INSERT INTO registration(student_name)
VALUES('Shivayan Mukherjee');
В этом операторе мы задаем только значение для столбца student_name. Остальные столбцы получают значения по умолчанию, одно из которых - текущая дата.

CURRENT_TIME
Функция CURRENT_TIME возвращает текущее время вместе с локальным часовым поясом. Функция имеет необязательный аргумент, называемый точностью. Синтаксис:
SELECT CURRENT_TIME;
Первая половина вывода представляет время в 24-часовом формате. Поскольку точность в аргументе не указана, возвращается шестизначное десятичное значение. +05:30 - это локальный часовой пояс Индии.

Во втором примере в качестве аргумента точности передается 2. Следовательно, значение на выходе будет содержать до 2-х десятичных знаков.
SELECT CURRENT_TIME(2);

Подобно функции CURRENT_DATE, функция CURRENT_TIME также используется для вставки значения по умолчанию в те столбцы, где требуется отслеживать системное время при записи. Рассмотрим следующий пример:
CREATE TABLE registration(
student_id serial PRIMARY KEY,
student_name varchar(255) NOT NULL,
registration_date DATE DEFAULT CURRENT_DATE,
registration_time TIME DEFAULT CURRENT_TIME
);
Теперь вставим в таблицу запись:
INSERT INTO registration(student_name)
VALUES('Shivayan Mukherjee');
В этом операторе мы указали значение только для столбца student_name. Остальные столбцы получают значения по умолчанию при вставке записи.

CURRENT_TIMESTAMP
Функция CURRENT_TIMESTAMP возвращает текущую даты и время, а также локальный часовой пояс. Поскольку эта функция сочетает дату и время, она имеет предпочтение в мире программирования по сравнению с отдельными функциями даты и времени. Функция имеет необязательный аргумент - точность. Синтаксис:
SELECT CURRENT_TIMESTAMP;
В этом примере первая часть вывода содержит дату в формате YYYY-MM-DD, затем время в 24-часовом формате и, поскольку точность не указана в аргументе функции, возвращается 6-значное десятичное значение. +05:30 - локальный часовой пояс Индии.

В следующем примере предается точность 2, поэтому в выводе присутствует 2 десятичных знака.
SELECT CURRENT_TIMESTAMP(2);

CURRENT_TIMESTAMP может использоваться для вставки значения по умолчанию в столбцы, где необходимо отслеживать время записи. Следующий пример демонстрирует этот сценарий:
CREATE TABLE registration(
student_id serial PRIMARY KEY,
student_name varchar(255) NOT NULL,
registered_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Давайте вставим запись в таблицу
INSERT INTO registration(student_name)
VALUES('Shivayan Mukherjee');
В операторе указано значение только для столбца student_name. Остальные столбцы получают значения по умолчанию при вставке.

Видно, что столбец registered_at получил значение даты и времени, когда был выполнен оператор.
Trackbacks
The author does not allow comments to this entry
Comments
Display comments as Linear | Threaded