在SQL Server 2008 R2中测试时间(7)数据类型值是否为00:00:00.0000000

在SQL Server 2008 R2中测试时间(7)数据类型值是否为00:00:00.0000000,sql,sql-server-2008-r2,Sql,Sql Server 2008 R2,我在SQLServer2008R2数据库中有一个名为“Messages”的表。此表中的一列是TimeSentoftime(7)type 有时此列的值在表中的一些行中为00:00:00.0000000,如下面的屏幕截图所示 我的问题是:如何编写查询以获取列TimeSent中时间为零(非空)的所有行?下面我尝试的查询无效 SELECT * FROM Messages WHERE TimeSent = 0 更新1: 虽然marc_的答案是公认的答案,但我还发现了另一种在SQLServer2008R

我在SQLServer2008R2数据库中有一个名为“Messages”的表。此表中的一列是
TimeSent
of
time(7)
type

有时此列的值在表中的一些行中为
00:00:00.0000000
,如下面的屏幕截图所示

我的问题是:如何编写查询以获取列
TimeSent
中时间为零(非空)的所有行?下面我尝试的查询无效

SELECT * FROM Messages WHERE TimeSent = 0

更新1:

虽然marc_的答案是公认的答案,但我还发现了另一种在SQLServer2008R2中检查零时间的方法,如下面的代码所示

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

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

这行得通吗?

TIMEFROMPARTS
是SQL Server 2012中的一项新功能,因此不适用于2008 R2上的OP……是的,这行得通。我还发现,只要至少指定了两个时间部分,0字符串就不必完全匹配。因此,“where-TimeSent='00:00'”也起作用,“where-TimeSent='0:0'”也起作用,但“where-TimeSent='0'”不起作用。谢谢
SELECT * 
FROM Messages 
WHERE TimeSent = '00:00:00.0000000'