今天最有效的地板方式

时间:2014-01-22 10:35:09

标签: sql-server-2008 tsql

这看起来有点矫枉过正,但这是我能够在数据库级别将今天的日期时间设置为00:00:00.000的唯一方法:

select CAST(FLOOR(CAST(CURRENT_TIMESTAMP AS float)) AS DATETIME)

我尝试过使用:

select FLOOR(getdate())

但是请收到以下消息:

  

不允许从数据类型datetime到float的隐式转换。使用CONVERT函数运行this query.

有人可以推荐另一种方法吗?

2 个答案:

答案 0 :(得分:3)

由于您使用的是SQL Server 2008,因此可以使用date数据类型。

declare @Today date

set @Today = getdate()

select @Today    

或没有变量。

select cast(getdate() as date)

如果您需要将该值作为日期时间,则将其转换回日期时间。

select cast(cast(getdate() as date) as datetime)

答案 1 :(得分:1)

有很多方法可以做到这一点我之前见过一个地板。还有一些。

select cast(cast(CURRENT_TIMESTAMP as date) as datetime)

SELECT  DATEADD(DAY, DATEDIFF(DAY, 0, CURRENT_TIMESTAMP), 0) 

SELECT CAST(CAST(CURRENT_TIMESTAMP - 0.50000004 AS int) AS datetime)

我正常做Cast版本。