访问日期过滤器

时间:2017-02-26 12:39:33

标签: date ms-access

我有一张表格,列出收到的订单。

我正在运行一份报告,看看在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)

但是查询正在运行并且给我到目前为止收到的所有订单(2017年2月26日)。

正确答案应该为零(2月10日之前没有收到订单),而是 - 它显示我200条记录,我可以看到orderDate字段之后的 > 2月10日。

感谢您的意见!

2 个答案:

答案 0 :(得分:1)

Access SQL不期望格式为dd / mm / yyyy,但是mm / dd / yyyy或yyyy / mm / dd表示日期值的字符串表达式(它本身不带格式)。因此,2017年2月10日的读作是2017年10月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

答案 1 :(得分: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

由于