Microsoft Access で年の開始週を変更する

Microsoft Access で年の開始週を変更する

Access クエリを使用して、Microsoft Access で週ごとに注文された特定のアイテムの数量を取得しています。データセットは 2018 年 6 月 1 日から 2019 年 5 月 31 日までです。対応する各注文日から週番号を取得する列を追加しました。クエリ フィールドで次の式を使用して、暦年の最初の週 (1 月の最初の週) から開始する限り、正常に機能します。

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関数は次の 4 つの列挙のうち 1 つだけを受け入れます。

  • vbUseSystem (0)NLS API設定を使用します。
  • vbFirstJan1 (1)1月1日を含む週から開始する(デフォルト)。
  • vbFirstFourDays (2)新年最初の4日間以上ある週から始めます。
  • 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)))

関連情報