2010-08-05 35 views
3

我SMALLDATETIME類型的列,日期檢查SMALLDATETIME列等於GETDATE() - 忽略時間

我想運行一個查詢,僅檢索行:

其中date =轉換( smalldatetime,GetDate())

但是,這從來沒有找到匹配,因爲它也在比較時間。

即:01-01-2010 12點23分00秒= 01-01-2010 12:25:00

我怎麼能找到只有日期部分匹配!?將利用該指數

where date >= dateadd(dd, datediff(dd, 0, getdate()), 0) 
and date < dateadd(dd, datediff(dd, 0, getdate()), +1) 

+0

你的'日期'欄也是日期時間?那麼你需要在**這個列和當前日期**的日期部分發出一個WHERE。另外,IIRC,smalldatetime還有一個時間組件。難道你只是想轉換爲日期而不是日期? – Tobiasopdenbrouw 2010-08-05 15:30:35

回答

1

轉換您的日期時間值日期值。這將只存儲日期部分供您比較。

MSSQL中可用的日期和時間數據類型的列表是here

0
where cast(CONVERT(char(10),DATETIME_FIELD_1,101) as datetime) 
    = cast(CONVERT(char(10),DATETIME_FIELD_2,101) as datetime) 
0

你可以嘗試:

Where CAST(FLOOR(CAST([Date] AS FLOAT)) AS DATETIME) = CAST(FLOOR(CAST(GETDATE() AS FLOAT)) AS DATETIME) 

這將使這兩個日期的出現:

2010-08-05 00:00:00.000

,因此只比較忽略時間的日期

0

發現這一點:

CAST(CONVERT (CHAR(8), GETDATE(), 112) AS smalldatetime) 

從這裏: reference

當我添加了一個SMALLDATETIME字段添加到現有表此SQL工作對我來說:

SELECT  testing 
FROM   LTCCAssessment 
WHERE  (testing = CAST(CONVERT(CHAR(8), GETDATE(), 112) AS smalldatetime)) 
2

嘗試:

where datediff(dd, yourdate, GetDate()) = 0