2008-11-20 210 views
1

如何檢查記錄的時間戳日期是否在今天午夜之前?SQL日期比較

DATEDIFF我發瘋...

+0

如果今天是2008年11月21日,那麼你的意思是包括2008-11-21 23:59或2008-11-21 00:00?到目前爲止,大部分答案都假設後者。在這種情況下,您可以爲這些結果添加一天。 – knightpfhor 2008-11-20 21:03:21

+0

添加1天並減去4ms。 IIRC SQL將日期時間處理爲毫秒的最接近的三分之一。所以2008-11-21 23:59:59.997會在2008-11-22 00:00:00.000「四捨五入」。它在我所維護的某些報告軟件中引起了一些錯誤。 – StingyJack 2008-11-21 12:40:18

回答

1

這裏是如何得到0小時今天在SQL

SELECT (CAST(FLOOR(CAST(GETDATE() as FLOAT)) AS DateTime)) 

只是比較你對那個時候。

不要使用varchar強制轉換,因爲它們很慢。

Check this list獲取更多日期時間幫助。

6

嘗試:

WHERE dtColumn < DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE())) 
0

試試這個:

where myColumn < cast((cast(getdate() - 0.5 as int)) as datetime) 
0

如果的ColumnName(列正在檢查)是數據類型日期時間和NOT時間戳, 那麼最快的方法是

Select Case DateDiff(day, columnName, getDate()) 
    When 0 Then 'Today' Else 'Earlier' End 
From TableName 

假設所有日期v ColumnName中的線索現在或更早...

想起datediff的最簡單方法是它計算指定類型的「限制」數量,您必須通過該限制來從一個日期時間傳遞到另一個日期時間...