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

Hvordan bestemmer jeg den sidste dag i den foregående måned ved hjælp af PostgreSQL?

Begge løsninger inkluderer den sidste dag i den foregående måned og også inkluder hele "i dag".

For en date kolonne:

SELECT *
FROM   tbl
WHERE  my_date BETWEEN date_trunc('month', now())::date - 1
               AND     now()::date

Du kan trække almindelige heltalsværdier fra en date (men ikke fra et timestamp ) for at trække dage fra. Dette er den enkleste og hurtigste måde.

For et timestamp kolonne:

SELECT *
FROM   tbl
WHERE  my_timestamp >= date_trunc('month', now()) - interval '1 day'
AND    my_timestamp <  date_trunc('day'  , now()) + interval '1 day'

Bemærk, at jeg bruger < operatør for den anden betingelse for at få præcise resultater (~ "før i morgen").

Jeg caster ikke til date i den anden forespørgsel. I stedet tilføjer jeg et interval '1 day' , for at undgå at kaste frem og tilbage.

Se dato/klokkeslætstyper og funktioner i manualen.



  1. Oprettelse af en database programmatisk i SQL Server

  2. Kun ét udtryk kan angives i valglisten, når underforespørgslen ikke er introduceret med EXISTS

  3. Hvordan REGEXP virker i MariaDB

  4. Introduktion til Failover for MySQL-replikering - 101-bloggen