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

Retourner la fin du mois dans SQLite

Dans SQLite, nous pouvons utiliser la méthode suivante pour calculer le dernier jour d'un mois donné.

Nous pouvons baser cela soit sur la date actuelle, soit sur une autre date spécifique.

Dernier jour du mois en cours

Voici un exemple qui renvoie le dernier jour du mois en cours :

SELECT DATE('now', 'start of month', '+1 month', '-1 day');

Résultat :

2022-03-31

Ceci utilise le DATE() fonction pour retourner les résultats que nous voulons. Le 'now' l'argument renvoie la date actuelle et le 'start of month' l'argument le modifie au début du mois. On utilise alors '+1 month' ajouter un mois au début du mois (ce qui le décalerait au début du mois suivant), puis on diminue cette date d'un jour (pour la ramener à la fin du mois initial).

Dernier jour d'un mois spécifié

Mais comme mentionné, nous ne sommes pas limités à la fin du mois en cours. Nous pouvons spécifier n'importe quelle date, et il renverra la fin du mois, en fonction de cette date.

Voici quelques exemples :

SELECT 
    DATE('2023-02-10', 'start of month', '+1 month', '-1 day') AS Feb,
    DATE('2023-11-10', 'start of month', '+1 month', '-1 day') AS Nov,
    DATE('2023-12-10', 'start of month', '+1 month', '-1 day') AS Dec;

Résultat :

Feb         Nov         Dec       
----------  ----------  ----------
2023-02-28  2023-11-30  2023-12-31

Nous pouvons voir que SQLite est assez intelligent pour calculer le nombre de jours dans chaque mois. Lorsque nous utilisons '+1 month' , SQLite sait combien de jours il y a dans chaque mois. Nous pouvons voir que février compte 28 jours, le 30 novembre et décembre en compte 31.

Si nous reportons la date d'origine à 2024, nous pouvons voir que février compte 29 jours cette année-là :

SELECT 
    DATE('2024-02-10', 'start of month', '+1 month', '-1 day') AS Feb,
    DATE('2024-11-10', 'start of month', '+1 month', '-1 day') AS Nov,
    DATE('2024-12-10', 'start of month', '+1 month', '-1 day') AS Dec;

Résultat :

Feb         Nov         Dec       
----------  ----------  ----------
2024-02-29  2024-11-30  2024-12-31