Неправильное вычисление недели через datepart(week, ...)
Сделал в своей таблице авто-вычесление недели из даты, как пример имеем дату 2021-01-08 00:00:00.000 и хотим получить из нее неделю (datepart(week,[Наша_Дата])).
В моем примере 8 Января 2021 года, это первая неделя в году. SQL показывает мне, что это вторая неделя .
В чем проблема и как ее решить?
Microsoft SQL Server 2016
Ответы (1 шт):
В старых версиях SQL Server разработчики не сильно заботились об ISO стандартах и решили считать неделю содержащую «1 января» первой.
По ISO стандартам первой считается неделя, на которую приходится «4 января». В более поздних версиях это учли и добавили модификатор “iso_week”. Модификатор “week” оставили неизменным из соображений совместимости.
The first week of the year, hence, always contains 4 January. ISO week year numbering therefore slightly deviates from the Gregorian for some days close to 1 January.