Une autre façon est astucieuse:
DATEADD(dd, 0, DATEDIFF(dd, 0, [YourDate]))
qui obtient le nombre de jours du jour de 0 à YourDate et l'ajoute à jour 0 de régler à nouveau la ligne de base. Cette méthode (ou "dérivés" de celle-ci) peut être utilisée pour un tas d'autres manipulations de date.
Modifier - autres calculs de date:
premier jour du mois:
DATEADD(mm, DATEDIFF(mm, 0, getdate()), 0)
premier jour de l'année:
DATEADD(yy, DATEDIFF(yy, 0, getdate()), 0)
premier jour du trimestre:
DATEADD(qq, DATEDIFF(qq, 0, getdate()), 0)
Dernier jour y du mois précédent:
DATEADD(ms, -3, DATEADD(mm, DATEDIFF(mm, 0, getdate()), 0))
Dernier jour du mois actuel:
DATEADD(ms, -3, DATEADD(mm, DATEDIFF(m, 0, getdate()) + 1, 0))
dernier jour de l'année en cours:
DATEADD(ms, -3, DATEADD(yy, DATEDIFF(yy, 0, getdate()) + 1, 0))
Premier lundi du mois:
DATEADD(wk, DATEDIFF(wk, 0, DATEADD(dd, 6 - DATEPART(day, getdate()), getdate())), 0)
Modifier: Il est vrai, Joe, il ne l'ajoute pas au JOUR 0, il ajoute 0 (jours) au nombre de jours qui, fondamentalement, le convertit simplement en un datetime.
Voir aussi: http://stackoverflow.com/questions/133081/most-efficient-way-in-ms-sql-to-get -date-from-datetime et http://stackoverflow.com/questions/2775/whats-the-best-way-to-remove-the-time-portion-of-a-datetime-value-sql-server – Kristen