#postgresql #datetime
#postgresql #дата и время
Вопрос:
Я хочу получить время за 1 час до текущего времени в PostgreSQL. Как я могу это сделать?
Скажем, например, в данный момент время равно '17:37:06'
, тогда я хочу, чтобы результат был выведен в виде '16:37:06'
Ответ №1:
Если вам действительно нужно только время, используйте current_time
current_timestamp
или now()
также вернет дату.
select current_time - interval '1' hour
или вычесть один час и 25 минут:
select current_time - interval '1:25'
(обратите внимание, что вам нужно удалить hour
ключевое слово, если вы используете интервал с часами и минутами)
Если вы хотите, чтобы дата была частью результата, просто замените current_time
на current_timestamp
.
Комментарии:
1.
interval
дополнительная опция восстанавливает набор сохраненных полей, поэтому по существуinterval '1:25' hour
равна 1 часу —interval '1:25'
amp;interval '1:25 hour'
являются допустимыми альтернативами. sqlfiddle.com /#!15/d41d8/23462. @pozs: спасибо, исправлено (кстати: я использую
interval '1' hour
, потому что это формат, определенный стандартом SQL)3. Это понятно — используя стандарт SQL, вы могли бы написать
interval '1:25' hour to minute
или использовать iso 8601 (стандарт даты / времени)interval 'PT1H25M'
, но, на мой взгляд, их сложнее читать.
Ответ №2:
Используйте interval
тип для выполнения арифметических операций над date
типами
select now() - interval '1 hour';
Можно использовать дроби, такие как 1 час и полтора
select now() - 1.5 * interval '1 hour';
Комментарии:
1. Я получаю следующее: ошибка при выполнении инструкции SELECT. ОШИБКА: столбец «интервал» не существует Позиция: 16