2014-07-14 47 views
1

我在SQL Server 2008 R2數據庫中有一個名爲'Messages'的表。該表中的一列是TimeSenttime(7)類型。在SQL Server 2008 R2中測試Time(7)數據類型值是00:00:00.0000000

對於表格中的幾行,此列值有時爲00:00:00.0000000,如以下屏幕截圖所示。

我的問題是:我將如何編寫一個查詢來獲取所有行中有零時間(非空)的列TimeSent?下面的查詢我嘗試不起作用。

SELECT * FROM Messages WHERE TimeSent = 0 

TimeSent value of 00:00:00.0000000

更新1:

雖然從marc_s答案是公認的答案,我也發現2008 R2的零時間在SQL Server檢查,如下面的代碼的另一種方式。

DECLARE @zeroTime AS time(7); 
SET @zeroTime = CAST('20140101' AS time(7)); 
SELECT * FROM Messages WHERE TimeSent = @zeroTime; 

回答

1

如何

SELECT * 
FROM Messages 
WHERE TimeSent = '00:00:00.0000000' 

運作的?

+0

是的。我還發現,只要至少指定了兩個時間部分,0串就不需要精確匹配。因此「Where TimeSent = '00:00'」也適用,「Where TimeSent ='0:0'」但「TimeSent ='0'」不起作用。謝謝。 – Sunil

1
SELECT * from Messages 
WHERE timesent = TIMEFROMPARTS (0,0,0,0,0) 
+0

'TIMEFROMPARTS'是SQL Server ** 2012 **中的一項新功能,因此不適用於2008 R2上的OP .... –

相關問題