Проблем:
Искате да покажете вчерашната дата (без час) в 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;