Как получить недельный номер с учетом условий - PullRequest
0 голосов
/ 15 октября 2018

Как я могу получить номер недели для даты с воскресеньем в качестве первого дня недели и начать с недели, в которой не менее четырех дней в новом году, в короткой части даты, эквивалентной

 DatePart("WW", datefield, vbSunday, vbFirstFourDays)?

Потому чтонапример, я хочу, чтобы 1 января 2015 года вернулось 53 вместо 1, поскольку первая неделя 2015 года имеет 4 дня, но начинается с четверга, а не воскресенья.

1 Ответ

0 голосов
/ 15 октября 2018

Я не знаю, соответствует ли это всем вашим требованиям, но есть ISO_WEEK.Попробуйте это:

SELECT DATEPART(ISO_WEEK,'20160103') 

Какой день принимается за первый день недели зависит от DATEFIRST.(См. Комментарии о ISO_WEEK и DATEFIRST. В случае ISO_WEEK это в любом случае понедельник ...)

Проверьте свои крайние случаи ...

Еслистандартные ( готовые к работе ) механизмы не отвечают вашим потребностям, вам следует подумать о календаре / таблице чисел .Вы можете расширить это на любой пользовательский столбец.Любой подход compute-this-some-magic-logic требует больше усилий и занимает больше времени, чем ручная установка некоторых значений ребер в таблице.Кроме того, такая таблица будет быстрее и поможет вам в очень многих связанных случаях.

...