Problem:
Chcesz wyświetlić wczorajszą datę (bez czasu) w bazie danych PostgreSQL.
Rozwiązanie 1:
SELECT current_date - INTEGER '1' AS yesterday_date;
Zakładając, że dzisiaj jest 24.09.2020 r., wynik jest następujący:
yesterday_date |
---|
23.09.2020 |
Dyskusja:
Aby uzyskać wczorajszą datę, musisz odjąć jeden dzień od dzisiejszej daty. Użyj current_date
aby uzyskać dzisiejszą datę. Pamiętaj, że nie potrzebujesz nawiasów na końcu current_date
funkcjonować. W PostgreSQL możesz odjąć lub dodać dowolną liczbę dni za pomocą INTEGER
słowo kluczowe. Tutaj, ponieważ musisz odjąć jeden dzień, użyj - INTEGER '1'
aby uzyskać wczorajszą datę. Zauważ, że wynik tego obliczenia nadal ma typ kolumny date
.
Rozwiązanie 2:
SELECT (current_date - INTERVAL '1 day')::date AS yesterday_date;
Zakładając, że dzisiaj jest 24.09.2020 r., wynik jest następujący:
yesterday_date |
---|
23.09.2020 |
Dyskusja:
Pobierz dzisiejszą datę za pomocą current_date
. Musisz odjąć odstęp jednego dnia od bieżącej daty. Aby to zrobić, użyj INTERVAL
słowo kluczowe, które tworzy dowolny przedział czasu/daty (tutaj, '1 day'
, co w PostgreSQL oznacza 24 godziny). Odejmowanie INTERVAL '1 day'
od dzisiejszej daty spowoduje wyświetlenie kolumny sformatowanej jako znacznik czasu, więc musisz przesłać ją na date
. Najszybszym sposobem na zrobienie tego w PostgreSQL jest dodanie ::date
do całego wyrażenia (pamiętaj, aby umieścić wyrażenie w nawiasach).
Oczywiście równie łatwo można się cofnąć o dowolny przedział czasu. Oto przykład:
SELECT (current_date - INTERVAL '3 months 10 days')::date;
INTERVAL
można również dodać na randkę. Oto sposób, jeśli chcesz uzyskać jutrzejszą datę:
SELECT (current_date + INTERVAL '1 day')::date AS tomorrow_date;