簡體   English   中英

日期查詢之間的MS訪問

[英]MS-Access Between Dates Query

我有一個工作正常的查詢,除了不在某些日期之間計算。 我的初始查詢SQL是

SELECT 
Roster.UserID, 
SchedulingLog.Category, 
Sum(IIf([CatDetail] Like '*Gain*',[Value],0)) AS Gain,
Sum(IIf([CatDetail] Like '*Used*',[Value],0))+Sum(IIf([CatDetail] Like 'Adj*',[Value],0)) AS Used,
[Gain]+[Used] AS [Left]
FROM SchedulingLog INNER JOIN Roster ON SchedulingLog.UserID = Roster.UserID
WHERE (((SchedulingLog.EventDate)>DateSerial(Year(Date()),5,20)))
GROUP BY Roster.UserID, SchedulingLog.Category
HAVING (((SchedulingLog.Category) Like "DH*" Or (SchedulingLog.Category) Like "Comp*"));

這個SQL工作正常,直到新的一年。 我在WHERE語句中修改了我的代碼以使用BETWEEN限定符,但我無法使其工作。 這是新的SQL ...

SELECT
Roster.UserID,
SchedulingLog.Category,
Sum(IIf([CatDetail] Like '*Gain*',[Value],0)) AS Gain,
Sum(IIf([CatDetail] Like '*Used*',[Value],0))+Sum(IIf([CatDetail] Like 'Adj*',[Value],0)) AS Used, 
[Gain]+[Used] AS [Left]
FROM SchedulingLog INNER JOIN Roster ON SchedulingLog.UserID = Roster.UserID
WHERE (((SchedulingLog.EventDate) Between DateSerial(Year(Date()-1),5,20) And DateSerial(Year(Date()),5,20)))
GROUP BY Roster.UserID, SchedulingLog.Category
HAVING (((SchedulingLog.Category) Like "DH*" Or (SchedulingLog.Category) Like "Comp*"));

新SQL的目的是在去年5-20-20到今年5-20-20之間收集信息。 我在哪里錯過了船?

你的錯誤在這里:

DateSerial(Year(Date()-1),5,20)

它應該是:

DateSerial(Year(Date())-1,5,20)

只需在立即窗口中輸出兩個語句即可看出差異。

您的代碼( Year(Date()-1) )從今天的日期(2013年1月3日 - 1 = 2013年1月2日!!)減去1並從中獲取年份(2013年),結果是2013年 5 20
因此,您有效地從2013年5月20日到2013年5月20日加載數據!

我的代碼( Year(Date())-1 )獲取今天的日期(2013年)並從中減去1( - > 2012),因此結果是2012年 5 20

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM