Nous pouvons utiliser la méthode suivante dans PostgreSQL pour renvoyer le premier jour d'un mois donné.
Il peut s'agir du premier jour du mois en cours ou du premier jour du mois en fonction d'une date que nous spécifions.
Obtenir le premier jour du mois nous permet d'effectuer d'autres calculs sur la date résultante, comme ajouter un certain nombre de jours au début du mois, etc.
Début du mois en cours
Voici un exemple qui renvoie le premier jour du mois en cours :
SELECT date_trunc('month', now());
Résultat :
2022-04-01 00:00:00+10
Ceci utilise le date_trunc()
de PostgreSQL fonction pour retourner les résultats que nous voulons. Cette fonction tronque une valeur de date/heure à une précision spécifiée.
Dans ce cas, j'utilise le now()
fonction pour retourner la date actuelle, et le 'month'
l'argument modifie cette date au début du mois.
Nous pouvons le convertir en une valeur de date si nécessaire :
SELECT date_trunc('month', now())::date;
Résultat :
2022-04-01
Le voici à nouveau, avec la date réelle à laquelle j'ai exécuté l'exemple :
SELECT
now()::date AS "Current Date",
date_trunc('month', now())::date AS "Start of Month";
Résultat :
+--------------+----------------+ | Current Date | Start of Month | +--------------+----------------+ | 2022-04-09 | 2022-04-01 | +--------------+----------------+
Début d'un mois spécifié
Il n'est pas nécessaire que ce soit le début du mois en cours. Nous pouvons spécifier n'importe quelle date, et il renverra le début du mois, en fonction de cette date.
Exemple :
SELECT date_trunc('month', date '2030-07-14')::date;
Résultat :
2030-07-01
Nous pouvons ensuite utiliser le résultat pour effectuer d'autres actions dessus. Par exemple, nous pouvons ajouter un nombre donné de jours au résultat comme ceci :
SELECT date_trunc('month', date '2030-07-14')::date + 20;
Résultat :
2030-07-21
Exemple de base de données
Voici un exemple qui utilise des dates d'une base de données :
SELECT
rental_date,
date_trunc('month', rental_date)::date AS "The 1st of the Month",
date_trunc('month', rental_date)::date + 19 AS "The 20th of the Month"
FROM rental WHERE customer_id = 459 LIMIT 10;
Résultat :
+---------------------+----------------------+-----------------------+ | rental_date | The 1st of the Month | The 20th of the Month | +---------------------+----------------------+-----------------------+ | 2005-05-24 22:54:33 | 2005-05-01 | 2005-05-20 | | 2005-06-17 02:50:51 | 2005-06-01 | 2005-06-20 | | 2005-06-17 09:38:22 | 2005-06-01 | 2005-06-20 | | 2005-06-17 16:40:33 | 2005-06-01 | 2005-06-20 | | 2005-06-20 02:39:21 | 2005-06-01 | 2005-06-20 | | 2005-06-20 12:35:44 | 2005-06-01 | 2005-06-20 | | 2005-06-20 12:42:00 | 2005-06-01 | 2005-06-20 | | 2005-06-21 02:39:44 | 2005-06-01 | 2005-06-20 | | 2005-07-06 00:22:29 | 2005-07-01 | 2005-07-20 | | 2005-07-08 02:51:23 | 2005-07-01 | 2005-07-20 | +---------------------+----------------------+-----------------------+