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;