我有一张表格,列出收到的订单。
我正在运行一份报告,看看在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日。
感谢您的意见!
答案 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
由于