2014-01-22 23 views
1

這似乎有點小題大做,但我已經能夠落地今天的日期時間爲00唯一的辦法:00:00.000在數據庫級:地板今天的日期的最有效的方法

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

我已經嘗試使用:

select FLOOR(getdate()) 

但得到以下信息:

從數據類型日期時間隱式轉換到浮動是不允許的。使用CONVERT功能運行this query.

任何人都可以推薦另一種方式來做到這一點?

回答

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) 
+0

結果需要是日期時間,因爲我有一個函數在別處讀取值並檢查日期和時間。如果它是日期數據類型,這仍然可以工作嗎? – JsonStatham

+0

它可能*會被隱式轉換,但確保您可以將其轉換回'datetime'。 –

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) 

我正常地執行演員表演版。