将datetime值转换为floor

2 sql t-sql sql-server

通过我们的应用程序的现有存储过程,我看到下面的代码:

cast(floor(cast(@weekdate as float)) as datetime)                                                                             
Run Code Online (Sandbox Code Playgroud)

这个代码背后的任何一个解释目的?@Weekdate是一个datetime领域.

Tim*_*ter 5

它会截断日期时间.

SELECT DateAndTime = GETDATE(),
       DateOnly = cast(floor(cast(GETDATE() as float)) as datetime)
Run Code Online (Sandbox Code Playgroud)

Demo

这是我在SQL-Server 2005上使用的另一种方式:

dateadd(dd, datediff(dd,0, GETDATE()), 0)
Run Code Online (Sandbox Code Playgroud)

SQL-Server 2008引入了该date类型,然后它更容易:

cast(@weekdate as date)
Run Code Online (Sandbox Code Playgroud)