2015-08-20 125 views
0

我需要指定訪問條件的日期字段上的幫助,該日期字段將從我的數據庫中提取記錄,從去年開始,1/1/2014的日期與當天和當天的同一日期相同。這個信息的原因是能夠比較今年的今年迄今的記錄(以及後來的記錄)與去年的今年迄今的記錄......因此,如果今天的日期是8/20/2015年,我希望能夠從2015年1月1日至2015年8月20日,然後將其與2014年1月1日至2014年8月20日的比較。 僅供參考,我使用相同的查詢和表單根據每週,每季度的日期範圍對記錄進行計數,因此我無法在「開始」和「結束」日期中使用文本框。另外,我無法在我的查詢中預先指定任何日期。任何想法將不勝感激。謝謝你們。訪問查詢,返回前一年的記錄,截至當天,與當天相同但前一年的記錄

回答

2

去年的今年迄今爲止DateSerial將做你想做的。

Where [DateColumn] >= DateSerial(year(now)-1,1,1) 
     and [DateColumn] <= DateSerial(year(now)-1,month(now),day(now)) 

另一種選擇

Where [DateColumn] >= dateadd("yyyy", datediff("yyyy", 0, now)-2, 2) 
     and [DateColumn <= DateAdd("yyyy",-1, now) 
+0

'Now'不會在SQL工作。 – Gustav

+0

@Gustav,你現在在什麼環境下'Now'不工作? 'Date'現在都在'DateTime'模塊中。我希望如果一個人工作,另一個人也會工作。 – Brad

+2

謝謝@Brad。兩種方法都適用於我。謝謝 – b2amen

-1

下面的表達式可以在查詢設計器可以用作標準的日期字段

>="01/01/" & (Year(Date())-1) AND <=Day(Date()) & "/" & Month(Date()) & "/" & Year(Date())-1 

警告:使用字符串來構建日期應儘可能避免。 DateSerial()是一種更好的方法,但是這可以在MS Access(Jet/ACE)中使用。

+2

您不應該在日期中使用字符串處理 - 而dd/mm/yyyy將在SQL中失敗。 – Gustav

+0

同意;使用字符串來建立日期不是最佳實踐,應儘可能避免使用字符串DateSerial()。 OP表示「任何想法都將不勝感激」。並且這個答案確實提供了期望的結果... –

+0

我可以工作,但是對於1到12之間的日期值將會失敗,因爲SQL將以mm/dd/yyyy讀取dd/mm/yyyy字符串。始終使用yyyy-mm-dd格式。 – Gustav

2

您需要在SQL中使用日期():

Where [DateColumn] >= DateSerial(Year(Date())-1,1,1) 
     And [DateColumn] <= DateAdd("yyyy",-1,Date()) 
+0

謝謝@Gustav。你的方法也適用於我。謝謝 – b2amen

相關問題