PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment puis-je déterminer le dernier jour du mois précédent à l'aide de PostgreSQL ?

Les deux solutions incluent le dernier jour du mois précédent et également inclure tout "aujourd'hui".

Pour une date colonne :

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

Vous pouvez soustraire des valeurs entières simples d'une date (mais pas à partir d'un timestamp ) pour soustraire des jours. C'est le moyen le plus simple et le plus rapide.

Pour un timestamp colonne :

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

Notez que j'utilise le < opérateur pour la deuxième condition afin d'obtenir des résultats précis (~ "avant-demain").

Je ne diffuse pas à date dans la deuxième requête. Au lieu de cela, j'ajoute un interval '1 day' , pour éviter les allers-retours.

Jetez un œil aux types et fonctions de date/heure dans le manuel.