大于或等于日期

时间:2014-06-19 18:04:23

标签: sql ms-access

我的表有一个名为date1的字段。

当我在Access GUI数据表视图中查看表时,我可以看到日期是"正确的日期是从2013年10月1日到今天,2014年6月19日。当我在设计视图中查看table1时可以看到date1的格式为m / d / yyyy。

因此,当我运行此查询时,我预计只会在2014年4月1日到今天看到结果。但相反,我看到的结果可以追溯到2013年。

SELECT *
FROM someTable
WHERE ((([someTable].medium1)='Direct'))
OR ((([someTable].medium1)='Paid Search') 
AND (([someTable].date1)>=#4/1/2014#));

我也尝试删除了#。我只是在做了一些Google搜索后添加了这些内容。

有人能发现为什么我的查询返回结果,其中date1小于2014年4月1日?

2 个答案:

答案 0 :(得分:5)

我认为你的OR正在抛弃结果。

日期是否包含其他标准? (意味着所有值都应该在该日期之后?如果是,则where子句关闭。

SELECT *
FROM someTable
WHERE ([someTable].medium1 = 'Direct' OR [someTable].medium1 = 'Paid Search')
AND   ([someTable].date1)>=#4/1/2014#);

或者...

SELECT *
FROM someTable
WHERE [someTable].medium1 in ('Direct', 'Paid Search')  
 AND  [someTable].date1 >= #4/1/2014#;

...或

SELECT *
FROM someTable
WHERE ([someTable].medium1='Direct' OR [someTable].medium1='Paid Search')
AND   [someTable].date1>=#4/1/2014#;

答案 1 :(得分:2)

视图中的数据取决于字段格式。启动查询时,将按原样返回数据。您必须使用format函数确保日期格式。

请改用此查询:

select *
from someTable
where someTable.date1 between format("04/01/2014","mm/dd/yyyy") and now()
and someTable.medium1 in ('Direct','Paid Search')