Skip to content

Дата и время в PostgreSQL. Часть 2

Пересказ статьи Shivayan Mukherjee. PostgreSQL Date And Time Part 2


Обзор


В этой статье мы рассмотрим наиболее часто используемые функции работы с датой и временем в PostgreSQL: LOCALTIMESTAMP(), LOCALTIME(), TO_DATE(), TO_TIMESTAMP(). Если вы пропустили первую часть, начните с неё.


LOCALTIMESTAMP()


Функция LOCALTIMESTAMP() возвращает текущие дату и время без локального часового пояса. Функция может иметь необязательный аргумент, называемый точностью. Базовый синтаксис:

SELECT LOCALTIMESTAMP;

Первая часть результата представляет дату, за которой следует время в 24-часовом формате. Поскольку точность не указана, возвращается 6 десятичных знаков.



В этом примере число 2 в аргументе задает точность, следовательно на выходе будет 2 десятичных знака.

SELECT LOCALTIMESTAMP(2);



В мире программирования функция LOCALTIMESTAMP часто используется для вставки значений по умолчанию в столбцы, которые отслеживают текущее время вставки записей, например, в столбцах аудита.

Давайте рассмотрим следующий пример, чтобы понять сценарий. В этой таблице registration_datetime является столбцом аудита.

CREATE TABLE registration(
student_id serial PRIMARY KEY,
student_name varchar(255) NOT NULL,
registration_datetime TIMESTAMP DEFAULT LOCALTIMESTAMP
);

Теперь вставим запись в эту таблицу

INSERT INTO registration(student_name)
VALUES('James Watt');

Видим, что наряду с предоставленными данными пользователя, столбец аудита так же заполнился текущим значением временной метки.



LOCALTIME()


Функция LOCALTIME() возвращает текущее время без локального часового пояса. Функция принимает необязательный аргумент, называемый точностью. Базовый синтаксис:

SELECT LOCALTIME;

Результат представляет собой время в 24-часовом формате. Поскольку точность не указывалась, выводится 6 десятичных знаков.



В этом примере в качестве аргумента точности передается значение 2, поэтому выводится 2 десятичных знака.

SELECT LOCALTIME(2);



Подобно функции LOCALTIMESTAMP, функция LOCALTIME также часто используется для вставки значений по умолчанию в столбцы, которые отслеживают текущее время вставки записей - столбцах аудита.

В следующем примере столбцы таблицы registration_date и registration_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 LOCALTIME
);

Давайте вставим теперь запись в таблицу:

INSERT INTO registration(student_name)
VALUES('Shivayan Mukherjee');

Видим, что столбцы аудита заполняются текущими датой и временем, наряду с предоставленными данными о пользователе.



TO_DATE


Функция TO_DATE() помогает преобразовать строку в дату и, возможно, является одной из наиболее важных и широко используемых функций даты/времени PostgreSQL в мире программирования. Функция TO_DATE() конвертирует строковый литерал в значение даты. Базовый синтаксис:

TO_DATE(текст, формат_даты);

Функция TO_DATE() принимает два параметра. Первый параметр - это строка, которую вы хотите конвертировать в дату. Второй параметр - формат даты. Функция TO_DATE() возвращает значение даты.

Пример 1:

В этом примере входная строка преобразуется в дату в соответствии с входным форматом 'YYYYMMDD', где YYYY - год четырьмя цифрами, MM - месяц двумя цифрами и DD - день двумя цифрами.

SELECT TO_DATE('20210910','YYYYMMDD');



Пример 2:

Важно заметить, что входной текст должен соответствовать указанному формату даты. Будет работать следующий запрос:

SELECT TO_DATE('10 Sep 2021', 'DD Mon YYYY');



Этот запрос вызовет ошибку, т.к. месяц и год в строке не соответствуют форматированию.

SELECT TO_DATE('10 Sep 2021', 'DD YYYY Mon');



TO_TIMESTAMP()


Функция TO_TIMESTAMP() помогает конвертировать строку в временную метку. функция TO_TIMESTAMP() преобразует строковый литерал в метку времени на основе указанного формата. Базовый синтаксис:

TO_TIMESTAMP(текст, формат_метки_времени)

Функция TO_TIMESTAMP() принимает два параметра - строку, которую требуется преобразовать к метке времени, и соответствующий формат. Функция TO_TIMESTAMP() возвращает временную метку с часовым поясом.

Пример 1:

В этом примере входная строка преобразуется к дате в соответствии с входным форматом 'YYYY-MM-DD HH:MI:SS', где YYYY - год, заданный четырьмя цифрами, MM - месяц двумя цифрами и DD - день двумя цифрами с последующим форматом часов, минут и секунд.

SELECT TO_TIMESTAMP(
'2021-09-10 11:30:20',
'YYYY-MM-DD HH:MI:SS'
);



Пример 2: время в 24-часовом формате

Выражение времени в первом примере поддерживает 12-часовой формат времени. Для поддержки 24-часового формата времени должно использоваться выражение 'HH24', как показано в этом примере.

SELECT TO_TIMESTAMP(
'2021-09-10 21:30:20',
'YYYY-MM-DD HH24:MI:SS'
);

Результат:


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

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

Комментарии

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

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

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

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

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

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