Convertir la valeur de date-heure en étage

Quand passer par la procédure stockée existante de notre application, j'ai vu le code ci-dessous:

cast(floor(cast(@weekdate as float)) as datetime) 

Quelqu'un explique le but derrière ce code? @Weekdate est un champ datetime .

Il tronque le time du datetime.

 SELECT DateAndTime = GETDATE(), DateOnly = cast(floor(cast(GETDATE() as float)) as datetime) 

Démo

Voici une autre méthode que j'utilise sur SQL Server 2005:

 dateadd(dd, datediff(dd,0, GETDATE()), 0) 

SQL-Server 2008 a introduit le type de date , alors c'est plus simple:

 cast(@weekdate as date)