
Microsoft Access에서 주별로 주문한 특정 항목의 수량을 캡처하기 위해 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
함수는 다음 네 가지 열거형 중 하나만 허용합니다.
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)))