Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL检查记录和日期时间之间的时差小时数_Sql_Sql Server_Tsql - Fatal编程技术网

SQL检查记录和日期时间之间的时差小时数

SQL检查记录和日期时间之间的时差小时数,sql,sql-server,tsql,Sql,Sql Server,Tsql,我需要在这个查询中添加一个额外的参数,并检查两条记录之间的时间是否至少为2小时。这是原始查询: SELECT COUNT(Viewed) FROM [Views] WHERE userIP = @userIP AND MessageID=@MessageID 我尝试添加第二个,如下所示: SELECT COUNT(Viewed) FROM [Views] WHERE userIP = @userIP AND MessageID=@MessageID AND (@Now - dateTime)

我需要在这个查询中添加一个额外的参数,并检查两条记录之间的时间是否至少为2小时。这是原始查询:

SELECT COUNT(Viewed) FROM [Views] WHERE userIP  = @userIP AND MessageID=@MessageID
我尝试添加第二个,如下所示:

SELECT COUNT(Viewed) FROM [Views] WHERE userIP = @userIP
AND MessageID=@MessageID
AND (@Now - dateTime)>2
SELECT COUNT(Viewed) FROM [Views] WHERE userIP = @userIP
AND MessageID=@MessageID
AND DATEDIFF(HOUR, @Now, dateTime)>2
也像这样:

SELECT COUNT(Viewed) FROM [Views] WHERE userIP = @userIP
AND MessageID=@MessageID
AND (@Now - dateTime)>2
SELECT COUNT(Viewed) FROM [Views] WHERE userIP = @userIP
AND MessageID=@MessageID
AND DATEDIFF(HOUR, @Now, dateTime)>2
@Now=日期时间Now,2015-01-26 09:08:28.183

dateTime=已发布记录2015-01-25 11:06:15.001表中的日期时间

但我没有得到结果。怎么做?

试试这个

DATEDIFF(SECOND, [dateTime], @Now) > (2 * 60 * 60)

这假设您的[dateTime]值都在过去。如果它们也可能在将来出现,那么将其包装在ABS中。

您将值错误地放在Datediff中,请使用@now作为最后一个参数

DECLARE @OMG Datetime
SET @OMG = '2015-01-25 11:06:15.001'

SELECT DATEDIFF(HOUR, @OMG, GETDATE())

IF (DATEDIFF(HOUR, @OMG, GETDATE()) > 2)
    BEGIN
        PRINT 'Yes'
    END
ELSE
    BEGIN
        PRINT 'NO'
    END 
DATEDIFFMINUTE,@Now>120