在SQL Server 2008 R2中测试时间(7)数据类型值是否为00:00:00.0000000
我在SQLServer2008R2数据库中有一个名为“Messages”的表。此表中的一列是在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
TimeSent
oftime(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'