Problème :
Vous souhaitez trouver le dernier jour du mois pour une date spécifique dans T-SQL.
Exemple :
Notre base de données contient une table nommée Furniture
avec des données dans les colonnes Id
, Name
, et PurchaseDate
.
Identifiant | Nom | Date d'achat |
---|---|---|
1 | canapé | 2019-02-10 |
2 | bureau | 2019-04-01 |
3 | bibliothèque | 2019-05-20 |
Obtenons les noms et dates d'achat des produits et le dernier jour du mois où ces articles ont été achetés.
Solution :
Nous utiliserons la fonction EOMONTH() pour trouver le dernier jour du mois.
SELECT Name, PurchaseDate, EOMONTH(PurchaseDate) AS LastDayDate FROM Furniture;
Voici le résultat de la requête :
Nom | Date d'achat | DateJourDernier |
---|---|---|
canapé | 2019-02-10 | 2019-02-28 |
bureau | 2019-04-01 | 2019-04-30 |
bibliothèque | 2019-05-20 | 2019-05-31 |
Discussion :
Si vous souhaitez obtenir la date contenant le dernier jour du mois d'une date donnée, utilisez la fonction EOMONTH(). Cette fonction prend un argument obligatoire :une date (ou date et heure), qui peut être une colonne date/datetime ou une expression qui renvoie une date. (Dans notre exemple, nous utilisons le PurchaseDate
colonne.)
EOMONTH() renvoie le dernier jour du même mois comme argument. La requête ci-dessus pour le canapé avec la date d'achat "2019-02-10" renvoie "2019-02-28" ; en février 2019, le dernier jour du mois était le 28.
Si vous souhaitez renvoyer le dernier jour du deuxième, troisième, etc. mois à partir d'une date donnée, utilisez le deuxième argument facultatif de EOMONTH() :le nombre de mois à ajouter. Regardez l'exemple :
SELECT Name, PurchaseDate, EOMONTH(PurchaseDate,1) AS LastDayDate FROM Furniture;
Voici le résultat de la requête :
Nom | Date d'achat | DateJourDernier |
---|---|---|
canapé | 2019-02 -10 | 2019-03 -30 |
bureau | 2019-04 -01 | 2019-05 -31 |
bibliothèque | 2019-05 -20 | 2019-06 -30 |
Pour le canapé avec la date d'achat "2019-02-10", cette requête renvoie "2019-03-30" - le dernier jour du suivant mois. Nous avons ajouté un mois à la fin du mois en cours.
Si vous souhaitez trouver le dernier jour du mois avant un mois donné, utilisez une valeur négative (par exemple "-1") comme deuxième argument :
SELECT Name, PurchaseDate, EOMONTH(PurchaseDate,-1) AS LastDayDate FROM Furniture;
Voici le résultat de la requête :
Nom | Date d'achat | DateJourDernier |
---|---|---|
canapé | 2019-02 -10 | 2019-01 -31 |
bureau | 2019-04 -01 | 2019-03 -31 |
bibliothèque | 2019-05 -20 | 2019-04 -30 |