Problème :
Vous souhaitez obtenir la date 30 jours avant une date donnée dans T-SQL.
Exemple :
Notre base de données a une table nommée Computer
avec des données dans les colonnes Id
, Name
, et PurchaseDate
.
Identifiant | Nom | Date d'achat |
---|---|---|
1 | Sony GX1000 | 2019-01-20 |
2 | Samsung LX2000 | 2019-04-15 |
3 | Dell K80 | 2019-08-30 |
Obtenons le nom de chaque ordinateur et la date 30 jours avant sa date d'achat.
Solution :
Nous allons utiliser la fonction DATEADD() pour soustraire un nombre donné de jours d'une date.
SELECT Name, DATEADD(day, -30, PurchaseDate) AS BeforePurchaseDate; FROM Computer;
Voici le résultat de la requête :
Nom | Avant la date d'achat |
---|---|
Sony GX1000 | 2018-12-21 |
Samsung LX2000 | 2019-03-16 |
Dell K80 | 2019-07-31 |
Discussion :
Si vous souhaitez soustraire des dates ou des heures dans SQL Server, utilisez le DATEADD()
une fonction. Il faut trois arguments. Le premier argument est l'unité de date/heure - dans notre exemple, nous spécifions le jour unité.
Vient ensuite la valeur de l'unité de date ou d'heure . Dans notre exemple, il s'agit de -30 , car nous retirons 30 jours de la date actuelle. N'oubliez pas que le moins indique soustraction la valeur; sans ce signe, vous ajoutez à la date donnée.
Le dernier argument est la date à laquelle nous opérons ; il peut s'agir d'une colonne date/heure/dateheure ou de toute expression renvoyant une date ou une heure. Dans notre exemple, nous utilisons PurchaseDate
, une date
colonne.
La fonction renvoie une date modifiée. Dans notre exemple, la requête pour l'ordinateur nommé 'Dell K80'
renvoie une nouvelle date dans le BeforePurchaseDate
colonne. La date d'origine '2019-08-30'
est remplacé par la date de 30 jours :'2018-07-31'
.
Vous pouvez utiliser le DATEADD()
fonction pour tous les types de données de date et d'heure.