Skip to content

Дата и время в 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 получил значение даты и времени, когда был выполнен оператор.

Обратные ссылки

Нет обратных ссылок

Комментарии

Показывать комментарии Как список | Древовидной структурой

Нет комментариев.

Автор не разрешил комментировать эту запись

Добавить комментарий

Enclosing asterisks marks text as bold (*word*), underscore are made via _word_.
Standard emoticons like :-) and ;-) are converted to images.

To prevent automated Bots from commentspamming, please enter the string you see in the image below in the appropriate input box. Your comment will only be submitted if the strings match. Please ensure that your browser supports and accepts cookies, or your comment cannot be verified correctly.
CAPTCHA

Form options

Добавленные комментарии должны будут пройти модерацию прежде, чем будут показаны.