我有一个查询,假设该列中的日期未过期(该日期在一小时后过期,请参见下面的查询),则选择该列之一。所以这是我的查询和条件相反的显示(字段timeForgot用红色下划线标出,但似乎可以正常工作):
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)
但是,当我应用正确的条件时,即使显示某些字段,输出也不会显示任何内容。谁能告诉我此查询出了什么问题?
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)
答案 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