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

Comment ajouter un mois à une date dans SQLite

Problème :

Vous souhaitez ajouter un mois à une date donnée dans une base de données SQLite.

Exemple :

Notre base de données a une table nommée production avec des données dans les colonnes id , product , et start_date .

identifiant produit date_début
1 bureau 2019-08-17
2 fauteuil 2019-07-17
3 canapé 2019-10-31

Les produits ont une nouvelle date de début de production qui est un mois plus tard que celle indiquée ci-dessus. Obtenons les noms des produits et leur nouvelle date de début.

Voici la requête que vous écririez :

Solution :

SELECT product,
  DATE(start_date,'+1 months')
  AS new_start_date
FROM production;

Voici le résultat de la requête :

identifiant produit new_start_date
1 bureau 2019-09-17
2 fauteuil 2019-08-17
3 canapé 2019-12-01

Discussion :

Utilisez le SQLite DATE() fonction pour ajouter un mois à une date donnée (ou date et heure). Les arguments requis incluent la date/dateheure à modifier et un ou plusieurs modificateurs avec des valeurs indiquant le nombre d'unités à ajouter ou à soustraire.

Le premier argument peut être une expression renvoyant une valeur date/datetime ou une colonne date/datetime. Dans notre exemple, il s'agit de la colonne start_date .

Les modificateurs indiquent quelle unité de temps (et combien) ajouter/soustraire. Dans notre exemple, nous utilisons le modificateur ‘+1 mois '. Le modificateur commence par plus ou moins, indiquant une addition ou une soustraction. Ensuite, il y a une valeur (par exemple 1) et l'unité (par exemple mois , ans , jours , etc.) Si vous écrivez ‘-2 jours ', vous soustrayez 2 jours à une date donnée.

Important : Certains modificateurs nécessitent une syntaxe légèrement différente de celle indiquée ci-dessus. Par exemple, le 'jour de la semaine ' le modificateur vient avant la valeur (c'est-à-dire DATE(start_date,'weekday 3') ). D'autres modificateurs ne prennent aucune valeur, comme "début du mois ', qui affiche le premier jour du mois pour une date donnée (c'est-à-dire DATE(start_date,' start of month') ). Vous pouvez trouver des informations précises sur les modificateurs de date et d'heure dans la documentation SQLite.

Nous avons nommé la nouvelle colonne contenant la date de début mise à jour new_start_date . La nouvelle date de début de production pour le desk est 2019-09-17 , un mois après la date initiale du 2019-08-17 . Notez que pour le 2019-10-31 , la nouvelle date est 2019-12-01; c'est parce que novembre a 30 jours, pas 31.


No