SQL Server DateAdd不显示查询

时间:2019-01-17 16:12:47

标签: sql sql-server

我有一个查询,假设该列中的日期未过期(该日期在一小时后过期,请参见下面的查询),则选择该列之一。所以这是我的查询和条件相反的显示(字段timeForgot用红色下划线标出,但似乎可以正常工作):

Query with the opposite condition

select DATEADD(HOUR, 2, timeForgot) as Expiration, timeForgot as ReceivedAt, CURRENT_TIMESTAMP as Now
from forgot_password
where DATEADD(HOUR, 2, timeForgot) > Convert(smalldatetime,timeForgot)

但是,当我应用正确的条件时,即使显示某些字段,输出也不会显示任何内容。谁能告诉我此查询出了什么问题?

Query with right condition but no output

select DATEADD(HOUR, 2, timeForgot) as Expiration, timeForgot as ReceivedAt, CURRENT_TIMESTAMP as Now
from forgot_password
where DATEADD(HOUR, 2, timeForgot) < Convert(smalldatetime,timeForgot)

2 个答案:

答案 0 :(得分:2)

原因很简单

 DATEADD(HOUR, 2, timeForgot) < Convert(smalldatetime,timeForgot)

永远不是真的。

您希望此行完全过滤掉什么?

也许你是说

DATEADD(HOUR, 2, timeForgot) > Convert(smalldatetime,timeForgot)

这与您的第一个查询类似。

答案 1 :(得分:0)

很抱歉打扰您,我找到了答案,这真是一团糟,我确实想实现的查询是这样的:


    select DATEADD(HOUR, 2, timeForgot) as Expiration, timeForgot as ReceivedAt, CURRENT_TIMESTAMP as Now
from forgot_password
where DATEADD(MINUTE, 5, timeForgot) > CURRENT_TIMESTAMP