Дата и время в 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'
);
Результат:
Обратные ссылки
Автор не разрешил комментировать эту запись
Комментарии
Показывать комментарии Как список | Древовидной структурой