01/07/2008Deux méthodes pour obtenir le premier jour du mois en cours, à 0 h 00, sur SQL Server.
Méthode 1
SELECT CAST(FLOOR(CAST(DATEADD(dd, - DATEPART(dd, GETDATE()) + 1, GETDATE()) AS FLOAT)) AS datetime)
Explication :- DATEPART(dd, GETDATE()) : Renvoie le jour du mois
- DATEADD(...) : Soustraction de ce jour à la date actuelle
- CAST (... AS FLOAT) : Transtypage de la date/heure en réel
- FLOOR (...) : Arrondi du réel pour supprimer les heures
- CAST(... AS DATETIME) : Repasse en type date/heure
Méthode 2
SELECT CONVERT(datetime, CONVERT(VARCHAR, DATEADD(dd, - DATEPART(dd, GETDATE()) + 1, GETDATE()), 103) + ' 00:00:00',0)
Explication :- DATEPART(dd, GETDATE()) : Renvoie le jour du mois
- DATEADD(...) : Soustraction de ce jour à la date actuelle
- CONVERT(varchar ... , 103) : Transtypage de la date/heure en chaîne ne contenant que la date
- + ' 00:00:00' : Concatène avec une heure fixée à 0h00
- CONVERT(datetime ..., 0) : 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 09/01/2019 - Quillevere.net