请解释此查询的结果

时间:2017-05-01 00:06:46

标签: sql windows ms-access-2007

当我运行此查询时:

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)

我明白了:

enter image description here

请注意,当我这样做时:

SELECT DATE() FROM tblDoc

我明白了:

5/1/2017

我看到第一个查询返回一个看似不合逻辑的结果,因为存储在db中的日期与SQL中的日期具有相同的确切值,但第一个查询表明db列值大于{返回的日期{1}}功能。我缺少什么?

2 个答案:

答案 0 :(得分:2)

  

我现在在哪里,现在是5/1/2017。

如果是这样,当然会排除该日期的值:

WHERE INWARDDATE > Date() 
  如果2个日期不是,则该日期应该报告一个值   相同。

嗯,是的,但你没有回复记录,因此没有记录。

您看到的值是新记录(*)上的InwardDate的默认值

答案 1 :(得分:0)

date()会在您发布此日期时返回当前日期(4/30/17)。因此,如果它是>比今天的日期更长并且不为空。 5/1/17是> 4/30/17并且不为null,因此它返回它。