Поскольку у вас, вероятно, понедельник в качестве первого дня недели, это будет:
Select Sum(mypoints) As sumpoints
From MyTable
Where DatePart('ww', mydate, 2) = 42
Однако, если вам нужна точная ISO 8601 неделянумерации, вам придется использовать пользовательские функции, такие как:
Public Function ISO_WeekNumber( _
ByVal datDate As Date) _
As Byte
' Calculates and returns week number for date datDate according to the ISO 8601:1988 standard.
' 1998-2000, Gustav Brock, Cactus Data ApS, CPH.
' May be freely used and distributed.
Const cbytFirstWeekOfAnyYear As Byte = 1
Const cbytLastWeekOfLeapYear As Byte = 53
Dim bytWeek As Byte
Dim bytISOThursday As Byte
Dim datLastDayOfYear As Date
bytWeek = DatePart("ww", datDate, vbMonday, vbFirstFourDays)
If bytWeek = cbytLastWeekOfLeapYear Then
bytISOThursday = Weekday(vbThursday, vbMonday)
datLastDayOfYear = DateSerial(Year(datDate), 12, 31)
If Weekday(datLastDayOfYear, vbMonday) >= bytISOThursday Then
' OK, week count of 53 is caused by leap year.
Else
' Correct for Access97/2000 bug.
bytWeek = cbytFirstWeekOfAnyYear
End If
End If
ISO_WeekNumber = bytWeek
End Function
для замены DatePart .
Обратите внимание, что вам также придется фильтровать нагод, поскольку номера недели 1 и 52/53 ИСО обычно пересекают границы календарного года.
Приложение :
Это версия VBScript в случае VBA версия (выше) не может быть использована:
Option Explicit
MsgBox ISO_WeekNumber(Date)
WScript.Quit
Function ISO_WeekNumber(ByVal Date1)
' Calculates and returns week number for date Date1 according to the ISO 8601:1988 standard.
' 2019, Gustav Brock, Cactus Data ApS, CPH.
' May be freely used and distributed.
Const FirstWeekOfAnyYear = 1
Const LastWeekOfLeapYear = 53
Dim Week
Dim ISOThursday
Dim LastDayOfYear
Week = DatePart("ww", Date1, vbMonday, vbFirstFourDays)
If Week = LastWeekOfLeapYear Then
ISOThursday = Weekday(vbThursday, vbMonday)
LastDayOfYear = DateSerial(Year(Date1), 12, 31)
If Weekday(LastDayOfYear, vbMonday) >= ISOThursday Then
' OK, week count of 53 is caused by leap year.
Else
' Correct for VBA bug.
Week = FirstWeekOfAnyYear
End If
End If
ISO_WeekNumber = Week
End Function