06/10/2008Voici deux requêtes SQL Server permettant d'obtenir le dernier jour du mois en cours, à 23 h 59.
Méthode 1
SELECT DATEADD(ms, -2, DATEADD(MONTH, DATEDIFF(MONTH, 0,GETDATE() ) + 1,0))
Explication :
- Nombre de mois écoulés :
DATEDIFF(MONTH, 0, GETDATE())
- Ajoute nbMoisEcoules + 1 depuis aujourd'hui (pour obtenir le premier jour du mois suivant) :
- Soustraction de deux milli-secondes au premier jour du mois suivant :
Méthode 2
SELECT CONVERT(datetime, CONVERT(VARCHAR, DATEADD(DAY, -1, DATEADD(MONTH, DATEDIFF(MONTH, 0,getdate()) + 1,0)),103) + '23:59:59',0);
Explication :
- Nombre de mois écoulés :
DATEDIFF(MONTH, 0, GETDATE())
- Ajoute nbMoisEcoules + 1 depuis aujourd'hui (pour obtenir le premier jour du mois suivant) :
- Soustraction d'un jour au premier jour du mois suivant :
- Transtypage de la date/heure en chaîne ne contenant que la date :
CONVERT(VARCHAR ... , 103)
- Concatène avec une date heure :
- Transtypage de la chaîne créée en date/heure :
Attention, la valeur 103 est valable pour un SQL Server aux formats anglais/français. Pour le format américain, utiliser 101.
Dernière modification le 08/01/2019 - Quillevere.net