Lors de l'interrogation d'une base de données pour récupérer des enregistrements dans une plage de dates spécifique, il est souvent nécessaire d'inclure le dernier jour de le mois précédent. Cette plage peut varier chaque mois, en fonction de la date du jour.
Pour déterminer le dernier jour du mois précédent sans utiliser de fonction, vous pouvez utiliser la requête suivante pour un colonne date :
SELECT * FROM tbl WHERE my_date BETWEEN date_trunc('month', now())::date - 1 AND now()::date
La fonction date_trunc('month', now()) renvoie le premier jour du mois en cours. En soustrayant un jour de ce résultat à l'aide de l'opérateur de soustraction, on obtient le dernier jour du mois précédent.
Pour une colonne timestamp, la requête est légèrement différente :
SELECT * FROM tbl WHERE my_timestamp >= date_trunc('month', now()) - interval '1 day' AND my_timestamp < date_trunc('day' , now()) + interval '1 day'
La date_trunc ('month', now()) renvoie le début du mois en cours sous forme d'horodatage. Pour obtenir le dernier jour du mois précédent, nous soustrayons un jour en utilisant l'expression -intervalle '1 jour'.
Pour la deuxième condition, nous ajoutons un jour au date_trunc('day' , now() ) résultat en utilisant l'intervalle « 1 jour » pour garantir que la plage inclut tout « aujourd'hui ».
Si vous préférez utiliser une fonction, vous pouvez utiliser le Fonction LAST_DAY() pour obtenir le même résultat :
SELECT * FROM tbl WHERE my_date BETWEEN LAST_DAY(DATE_SUB(NOW(), INTERVAL 1 MONTH)) AND NOW()
Cette fonction calcule explicitement le dernier jour du mois précédent en fonction de la date actuelle.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!