2017-02-26 156 views
0

我有一张表,列出收到的订单。访问日期过滤器

我正在运行一个报告,查看在D日之前有多少个订单。 因此,举例来说,我希望看到:

D Day-5 days: 8 orders received in total 
D Day-4 days: 12 orders received in total 
D Day-3 days: 20 orders received in total 
D Day-2 days: 33 orders received in total 
D Day-1 days: 55 orders received in total 

这是我使用的查询:

SELECT * FROM recipients 
WHERE 
orderDate > #01/01/2017# 
AND orderDate < #10/02/2017# -- (Where 10/2/17 is already X days prior to D Day) 

但查询正在运行,给我迄今收到的所有订单(其中是26/2/2017)。

正确的答案应该是零(2月10日之前没有收到订单),而是 - 它向我展示200个+记录,在那里我可以看到orderDate二月

的10后

欣赏您的输入!

回答

0

我登陆上去使用Format1功能,这似乎解决了这个问题:

SELECT * FROM recipients 
WHERE 
orderDate > Format (#01/01/2017#,'dd/mm/yyyy') 
AND orderDate < Format (#10/02/2017#,'dd/mm/yyyy') 

虽然我仍然不完全理解什么是错我的初始查询。我想一个日期格式问题:DD/MM或MM/DD

感谢

1

访问SQL并不指望格式DD/MM/YYYY但MM/DD/YYYY或YYYY/MM/DD字符串表达式为一个日期值(它本身没有格式)。因此,2017年2月10日被读作2017年10月2日,即10月的第二天。

所以:

SELECT * FROM recipients 
WHERE 
orderDate > #01/01/2017# 
AND orderDate < #02/10/2017# 

,或者通用的方法,你很少有固定的日期值:

PARAMETERS DateFrom DateTime, DateTo DateTime; 
SELECT * FROM recipients 
WHERE 
orderDate > DateFrom AND orderDate < DateTo