在 Microsoft Access 中更改一年的開始週

在 Microsoft Access 中更改一年的開始週

我正在使用 Access 查詢來捕獲 Microsoft Access 中按週訂購的特定商品的數量。我的資料集從2018年6月1日運行到2019年5月31日。 )開始,它就可以正常工作一月)在查詢字段中使用以下表達式:

Week No: DatePart("ww",[date],1,1)

我的問題是,我希望 2018 年 6 月 1 日這一周顯示為一年中的第一周並按時間順序繼續(第 53 週對應於 2019 年 5 月的最後一周)。 2018 年 6 月 1 日屬於日曆年的第 22 週,因此我將表達式修改為:

Week No: DatePart("ww",[date],1,22)

但是,我現在在所有行的欄位中收到“#func”錯誤。

有沒有辦法編輯這個表達式,以便我正在查看的“年份”遵循 6 月 1 日至 5 月 31 日的模式,並且週數反映了這一點?

答案1

決賽firstweekofyear論證DatePart函數只接受四個枚舉之一:

  • vbUseSystem (0) 使用NLS API設定。
  • vbFirstJan1 (1) 從 1 月 1 日所在的週開始(預設)。
  • vbFirstFourDays (2) 從新年至少有四天的第一週開始。
  • vbFirstFullWeek (3) 從一年中的第一個整週開始。

因此,為該參數提供值22將會導致錯誤。


由於定義為 2018 年 6 月 1 日至 2019 年 5 月 31 日的年份與日曆年偏移了 151 天,因此您需要將計算偏移此金額。

因此,計算變成:

Week No: datepart("ww",datevalue([date])-151)

例如:

?datepart("ww",#2018-06-01#-151)
 1 
?datepart("ww",#2018-07-01#-151)
 5 
?datepart("ww",#2019-04-01#-151)
 44 
?datepart("ww",#2019-05-31#-151)
 53 

為了使未來年份的表達式能夠適應未來,您可能還需要動態計算偏移量(因為考慮到某些年份是閏年,它可能並不總是 151)。

為了實現這一點,您可以使用以下表達式:

Week No: datepart("ww",datevalue([date])-(dateserial(year(date())-iif(month(date())<6,1,0),6,1)-dateserial(year(date())-iif(month(date())<6,1,0),1,1)))

相關內容