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.