的结果,当我运行此查询:请解释这个查询
SELECT InwardDate
FROM tblDoc
WHERE InwardDate > DATE() AND (InwardDate IS NOT NULL)
我得到这样的结果
5/1/2017
我在数据库中的行具有值:
5/1/2017
因此,5/1/2017
不是> 5/1/2017
,结果应该是没有记录返回。
我后来去和尝试这样做,万一有一个时间差,我不能看到:
SELECT DATEDIFF("s", InwardDate, DATE()) AS DiffBetween, InwardDate
FROM tblDoc
WHERE InwardDate > DATE() AND (InwardDate IS NOT NULL)
我得到:
需要注意的是,当我做:
SELECT DATE() FROM tblDoc
我得到:
5/1/2017
我看到第一个查询返回一个明显不合逻辑的结果,因为存储在数据库中的日期与SQL中的日期具有相同的确切值,但第一个查询说db列的值大于返回的日期由DATE()
功能。我错过了什么?
感谢您的帮助,但是,WHERE InwardDate> DATE()AND(InwardDate IS NOT NULL)会生成5/1/2017的单个结果行。 – NoChance
左边也应该有'*'。尝试删除“InwardDate”列的默认值以使事情更清晰。 – Andre
@Andre,你关于“*”前缀的观点以及它不代表真实行的事实非常好。事实上,如果我用“WHERE FALSE”替换整个WHERE表达式,我仍然会得到相同的结果。对于列的默认值,您额外的注意点也非常重要。非常感谢你。 – NoChance