функция вычисляет правильный номер недели года

Я ищу функцию, которая дает мне право week-number.

Первый день года всегда должен приходиться на неделю номер 1. Первая суббота года относится к первой неделе.

Другими словами: вот то, что я ищу, но не в PostgreSQL, а в sql-server.

Я действительно хочу сделать это с помощью функции, которую я вызову позже.

Спасибо заранее за вашу помощь.


person Houari    schedule 01.04.2013    source источник
comment
Что именно вы пробовали?   -  person    schedule 01.04.2013
comment
Не утруждайте себя написанием функции. Вместо этого создайте таблицу календаря. и заполните его заранее. Это намного проще поддерживать и использовать в запросах, а также имеет множество других применений. Вы также можете просмотреть множество существующих вопросов по этой теме.   -  person Pondlife    schedule 03.04.2013


Ответы (2)


В SQL Server нет необходимости в пользовательской функции; просто используйте встроенную функцию DATEPART с week в качестве первого аргумента:

-- first day
select datepart(week, '2013-01-01');

Выход: 1

-- first Saturday
select datepart(week, '2013-01-05');

Выход: 1

-- first Sunday
select datepart(week, '2013-01-06');

Выход: 2

-- today
select datepart(week, '2013-04-01');

Выход: 14

Вот живая демонстрация: http://www.sqlfiddle.com/#!3/d41d8/11802

person Cristian Lupascu    schedule 01.04.2013
comment
У меня нет таких же выходов, как у вас, например: select datepart(week, '2013-01-06'); дает мне 1 и выберите datepart(week, '2013-01-07'); дает мне 2 - person Houari; 01.04.2013
comment
@Huari, это может быть из-за вашей настройки DATEFIRST - person Cristian Lupascu; 01.04.2013
comment
И когда я запускаю select @@datefirst на моем сервере, я получаю 1, но в живом демо я получаю 7 - person Houari; 01.04.2013
comment
@Huari точно, вот почему - person Cristian Lupascu; 01.04.2013
comment
@Huari использует SET DATEFIRST n (где n — новая настройка). Также см. ссылку, которую я предоставил 4 комментария выше - person Cristian Lupascu; 01.04.2013
comment
Но я не могу сделать набор datefirst внутри функции, и мне нужно получить его с помощью функции - person Houari; 01.04.2013

выберите datepart(week, getdate()) как CurrentWeekofYear

person djangojazz    schedule 01.04.2013