Problém:
Chcete zobrazit včerejší datum (bez času) v databázi PostgreSQL.
Řešení 1:
SELECT current_date - INTEGER '1' AS yesterday_date;
Za předpokladu, že dnes je 24. 9. 2020, výsledek je:
yesterday_date |
---|
23.09.2020 |
Diskuse:
Chcete-li získat včerejší datum, musíte odečíst jeden den od dnešního data. Použijte current_date
získat dnešní datum. Všimněte si, že na konci current_date
nepotřebujete závorky funkce. V PostgreSQL můžete odečíst nebo přidat libovolný počet dní pomocí INTEGER
klíčové slovo. Zde, protože potřebujete odečíst jeden den, použijete - INTEGER '1'
získat včerejší datum. Všimněte si, že výsledek tohoto výpočtu má stále typ sloupce date
.
Řešení 2:
SELECT (current_date - INTERVAL '1 day')::date AS yesterday_date;
Za předpokladu, že dnes je 24. 9. 2020, výsledek je:
yesterday_date |
---|
23.09.2020 |
Diskuse:
Získejte dnešní datum pomocí current_date
. Od aktuálního data musíte odečíst interval jednoho dne. K tomu použijte INTERVAL
klíčové slovo, které vytvoří libovolný časový a datumový interval, jaký chcete (zde '1 day'
, což je v PostgreSQL stejné jako 24 hodin). Odečítání INTERVAL '1 day'
od dnešního data bude mít za následek sloupec formátovaný jako časové razítko, takže jej musíte přenést na date
. Nejrychlejší způsob, jak toho dosáhnout v PostgreSQL, je připojení ::date
na celý výraz (nezapomeňte uzavřít výraz do závorek).
Stejně snadno se samozřejmě můžete vrátit o jakýkoli časový interval. Zde je příklad:
SELECT (current_date - INTERVAL '3 months 10 days')::date;
INTERVAL
lze také přidat na rande. Pokud tedy chcete získat zítřejší datum, zde je způsob:
SELECT (current_date + INTERVAL '1 day')::date AS tomorrow_date;