sql >> Database teknologi >  >> RDS >> PostgreSQL

Sådan får du gårsdagens dato i PostgreSQL

Problem:

Du vil gerne vise gårsdagens dato (uden tid) i en PostgreSQL-database.

Løsning 1:

SELECT current_date - INTEGER '1' AS yesterday_date;

Forudsat at i dag er 2020-09-24, er resultatet:

yesterday_date
2020-09-23

Diskussion:

For at få gårsdagens dato skal du trække en dag fra dagens dato. Brug current_date for at få dagens dato. Bemærk, at du ikke behøver parenteser i slutningen af ​​current_date fungere. I PostgreSQL kan du trække fra eller tilføje et hvilket som helst antal dage ved hjælp af INTEGER søgeord. Her, da du skal trække en dag fra, bruger du - INTEGER '1' for at få gårsdagens dato. Bemærk, at resultatet af denne beregning stadig har kolonnetypen date .

Løsning 2:

SELECT (current_date - INTERVAL '1 day')::date AS yesterday_date;

Forudsat at i dag er 2020-09-24, er resultatet:

yesterday_date
2020-09-23

Diskussion:

Få dagens dato ved at bruge current_date . Du skal trække et interval på én dag fra den aktuelle dato. For at gøre dette skal du bruge INTERVAL søgeord, som opretter et hvilket som helst tidspunkt/datointerval, du ønsker (her '1 day'). , som i PostgreSQL er det samme som 24 timer). Trækker INTERVAL '1 day' fra fra dags dato vil resultere i en kolonne formateret som et tidsstempel, så du skal caste den til date . Den hurtigste måde at gøre det på i PostgreSQL er at tilføje ::date til hele udtrykket (husk at sætte udtrykket i parentes).

Du kan selvfølgelig gå tilbage med et hvilket som helst tidsinterval lige så nemt. Her er et eksempel:

SELECT (current_date - INTERVAL '3 months 10 days')::date;

En INTERVAL kan også tilføjes til en date. Så her er en måde, hvis du ønsker at få morgendagens dato:

SELECT (current_date + INTERVAL '1 day')::date AS tomorrow_date;

  1. PostgreSQL bruger ikke et delvist indeks

  2. Er sp_-præfikset stadig et nej-nej?

  3. Hvad er Azure Data Studio?

  4. MariaDB CURRENT_ROLE() Forklaret