DECLARE @dt DATE = '2017-02-17'
SELECT @dt, DATEADD(DAY, 1 - DATEPART(DAY, @dt), @dt)
Ou
SELECT @dt, DATEADD(MONTH, DATEDIFF(MONTH, 0, @dt), 0)
Ce qui donne dans les deux cas :
17/02/2017 01/02/2017
Dans le premier exemple : on retire le nombre de jour moins 1 à la date en cours.
Dans le second : on ajoute à la date "0" la différence de mois entre "0" et la date fournie
Voici ce que j'utilise pour trouver le dernier jour du mois d'une date donnée :
DECLARE @dt DATE = '2017-02-17'
SELECT @dt, DATEADD(DAY, -1, DATEADD(MONTH, DATEDIFF(MONTH, 0, @dt) + 1, 0))
Ce qui donne :
17/02/2017 28/02/2017
Explication : on ajoute un mois au premier jour du mois et on retire un jour.
MAJ 05/2021 : Sinon pour de le dernier jour du mois, il existe a maintenant (depuis SQL Server 2014!) la fonction EOMONTH().
On lui donne un jour dans le mois, elle renvoie le dernier jour du mois, simple, Merci SQL Server !
Enjoy !
Aucun commentaire:
Enregistrer un commentaire