Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Определение номера недели  [new]
Foxhound
Member

Откуда:
Сообщений: 14
Добрый день

Код
select dt, datename(w,dt) as name, DATENAME(WEEK, dt) as week from 
(
select CONVERT (date, '29.12.2009', 104) dt
union all
select CONVERT (date, '30.12.2009', 104)
union all
select CONVERT (date, '31.12.2009', 104)
union all
select CONVERT (date, '01.01.2010', 104)
union all
select CONVERT (date, '02.01.2010', 104)
union all
select CONVERT (date, '03.01.2010', 104)
union all
select CONVERT (date, '04.01.2010', 104)
) r 


Результат
dt name week
29.12.2009 Tuesday 53
30.12.2009 Wednesday 53
31.12.2009 Thursday 53
01.01.2010 Friday 1
02.01.2010 Saturday 1
03.01.2010 Sunday 2
04.01.2010 Monday 2


Итог - первая неделя - 2 дня.
С этим можно что то сделать?
3 май 12, 21:49    [12504488]     Ответить | Цитировать Сообщить модератору
 Re: Определение номера недели  [new]
gds
Member

Откуда: Железнодорожный
Сообщений: 1842
Блог
Foxhound
С этим можно что то сделать?

А как надо?
set datefirst 1
--set language russian
select dt, datename(w,dt) as name, DATENAME(WEEK, dt) as week from 
(
select CONVERT (date, '29.12.2009', 104) dt
union all
select CONVERT (date, '30.12.2009', 104)
union all
select CONVERT (date, '31.12.2009', 104)
union all
select CONVERT (date, '01.01.2010', 104)
union all
select CONVERT (date, '02.01.2010', 104)
union all
select CONVERT (date, '03.01.2010', 104)
union all
select CONVERT (date, '04.01.2010', 104)
) r 

Так?
3 май 12, 21:57    [12504533]     Ответить | Цитировать Сообщить модератору
 Re: Определение номера недели  [new]
Yasha123
Member

Откуда:
Сообщений: 1973
в 2008 еще такое появилось:
select dt, datename(w,dt) as name, DATEPART(iso_week, dt) ISOweek from 
(
select CONVERT (date, '29.12.2009', 104) dt
union all
select CONVERT (date, '30.12.2009', 104)
union all
select CONVERT (date, '31.12.2009', 104)
union all
select CONVERT (date, '01.01.2010', 104)
union all
select CONVERT (date, '02.01.2010', 104)
union all
select CONVERT (date, '03.01.2010', 104)
union all
select CONVERT (date, '04.01.2010', 104)
) r 

dt         name                           ISOweek
---------- ------------------------------ -----------
2009-12-29 Tuesday                        53
2009-12-30 Wednesday                      53
2009-12-31 Thursday                       53
2010-01-01 Friday                         53
2010-01-02 Saturday                       53
2010-01-03 Sunday                         53
2010-01-04 Monday                         1
3 май 12, 22:16    [12504650]     Ответить | Цитировать Сообщить модератору
 Re: Определение номера недели  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31949
Yasha123
в 2008 еще такое появилось
Автор даже не может пока сказать, что же ему надо...

iso_week тоже может показаться неправильным, ведь первая неделя года может начинаться в прошлом году, а 1-го января будет 52-я неделя :-)
3 май 12, 22:30    [12504702]     Ответить | Цитировать Сообщить модератору
 Re: Определение номера недели  [new]
Foxhound
Member

Откуда:
Сообщений: 14
Ок, спасибо.
gds, при этом варианте 1-я неделя получается с 3-мя днями.
Yasha123 - этот вариант мне вполне подходит; первая неделя начинается с понедельника. Для меня было важно что бы не было недель с кол-вом дней < 7.

alexeyvg, если есть еще варианты, напишите пожалуйста - для будущих поколений. По ISO есть несколько вариантов определения нумерации недель
3 май 12, 22:48    [12504743]     Ответить | Цитировать Сообщить модератору
 Re: Определение номера недели  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31949
Foxhound
alexeyvg, если есть еще варианты, напишите пожалуйста - для будущих поколений. По ISO есть несколько вариантов определения нумерации недель
Вы же только сейчас сказали, что вам нужно - "что бы не было недель с кол-вом дней < 7". Для будущих поколений могу посоветовать сразу говорить, что требуется, тогда можно быстрее ответ получить :-)
4 май 12, 00:14    [12504993]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить