Проблем:
Искате да покажете вчерашната дата (без час) в PostgreSQL база данни.
Решение 1:
SELECT current_date - INTEGER '1' AS yesterday_date;
Ако приемем, че днес е 2020-09-24, резултатът е:
yesterday_date |
---|
23.09.2020 |
Дискусия:
За да получите вчерашната дата, трябва да извадите един ден от днешната. Използвайте current_date
за да получите днешната дата. Имайте предвид, че нямате нужда от скоби в края на current_date
функция. В PostgreSQL можете да изваждате или добавяте произволен брой дни, като използвате INTEGER
ключова дума. Тук, тъй като трябва да извадите един ден, използвате - INTEGER '1'
за да получите вчерашната дата. Имайте предвид, че резултатът от това изчисление все още има тип колона date
.
Решение 2:
SELECT (current_date - INTERVAL '1 day')::date AS yesterday_date;
Ако приемем, че днес е 2020-09-24, резултатът е:
yesterday_date |
---|
23.09.2020 |
Дискусия:
Вземете днешната дата с помощта на current_date
. Трябва да извадите интервал от един ден от текущата дата. За да направите това, използвайте INTERVAL
ключова дума, която създава всеки интервал от време/дата, който искате (тук, '1 day'
, което в PostgreSQL е същото като 24 часа). Изваждане на INTERVAL '1 day'
от днешната дата ще доведе до колона, форматирана като времева марка, така че трябва да я прехвърлите към date
. Най-бързият начин да направите това в PostgreSQL е да добавите ::date
към целия израз (не забравяйте да затворите израза в скоби).
Разбира се, можете също толкова лесно да се върнете назад за всеки интервал от време. Ето един пример:
SELECT (current_date - INTERVAL '3 months 10 days')::date;
INTERVAL
също може да седобавит на среща. И така, ето начин, ако искате да получите утрешната дата:
SELECT (current_date + INTERVAL '1 day')::date AS tomorrow_date;