2017-02-26 155 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