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

Откуда: Москва
Сообщений: 509
почему номер недели 53 хотя указал ISO_WEEK?


set language russian;
SET DATEFIRST 1 ;
set dateformat 'ymd';

select DATEPART(ISO_WEEK, '20201231')


Результат 53, а до этой даты все нормально, что делать?
Microsoft SQL Server 2017 (RTM-CU15-OD) (KB4506633) - 14.0.3164.1 (X64)
26 авг 19, 14:44    [21957675]     Ответить | Цитировать Сообщить модератору
 Re: почему номер недели 53 хотя указал ISO_WEEK  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
Focha
почему номер недели 53 хотя указал ISO_WEEK?

Наверное потому, что
https://docs.microsoft.com/ru-ru/sql/t-sql/functions/datepart-transact-sql?view=sql-server-2017
Наибольшее число недель в году может составлять 52 или 53.


Правила описаны, можете вручную пересчитать:
Каждая неделя приписывается тому году, в котором находится ее четверг.
26 авг 19, 14:56    [21957688]     Ответить | Цитировать Сообщить модератору
 Re: почему номер недели 53 хотя указал ISO_WEEK  [new]
Konst_One
Member

Откуда:
Сообщений: 11522
select DATEPART(WEEK, '20121231') [2012],  DATEPART(WEEK, '20201231') [2020]
26 авг 19, 15:02    [21957694]     Ответить | Цитировать Сообщить модератору
 Re: почему номер недели 53 хотя указал ISO_WEEK  [new]
Focha
Member

Откуда: Москва
Сообщений: 509
Konst_One
select DATEPART(WEEK, '20121231') [2012],  DATEPART(WEEK, '20201231') [2020]

да, я говорю про стандарт iso
select 
 DATEPART(ISO_WEEK, '20121231') [2012] -- 1
,DATEPART(ISO_WEEK, '20201231') [2020] -- 53
,DATEPART(WEEK, '20121231') [2012] -- 54 ???? такой недели нет
,DATEPART(WEEK, '20201231') [2020] -- 53 если в 2012 ISO_WEEK посчитал правильно, то в 2020 53
26 авг 19, 16:32    [21957753]     Ответить | Цитировать Сообщить модератору
 Re: почему номер недели 53 хотя указал ISO_WEEK  [new]
Посетитель
Member

Откуда:
Сообщений: 1209
Focha
Konst_One
select DATEPART(WEEK, '20121231') [2012],  DATEPART(WEEK, '20201231') [2020]


да, я говорю про стандарт iso
select 
 DATEPART(ISO_WEEK, '20121231') [2012] -- 1
,DATEPART(ISO_WEEK, '20201231') [2020] -- 53
,DATEPART(WEEK, '20121231') [2012] -- 54 ???? такой недели нет
,DATEPART(WEEK, '20201231') [2020] -- 53 если в 2012 ISO_WEEK посчитал правильно, то в 2020 53


так что у вас со стандартом то не бьется?
по стандарту первой неделей считается неделя, содержащая первый четверг в году.
26 авг 19, 16:39    [21957761]     Ответить | Цитировать Сообщить модератору
 Re: почему номер недели 53 хотя указал ISO_WEEK  [new]
Konst_One
Member

Откуда:
Сообщений: 11522
https://en.wikipedia.org/wiki/ISO_week_date
26 авг 19, 16:44    [21957764]     Ответить | Цитировать Сообщить модератору
 Re: почему номер недели 53 хотя указал ISO_WEEK  [new]
Focha
Member

Откуда: Москва
Сообщений: 509
понял
https://www.epochconverter.com/years
26 авг 19, 16:56    [21957777]     Ответить | Цитировать Сообщить модератору
 Re: почему номер недели 53 хотя указал ISO_WEEK  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4740
Focha,

А вы понимаете, что такое неделя ISO? Что первая неделя ISO может начинаться в предыдущем году, а последняя уходить в следующий год.
26 авг 19, 17:04    [21957780]     Ответить | Цитировать Сообщить модератору
 Re: почему номер недели 53 хотя указал ISO_WEEK  [new]
Focha
Member

Откуда: Москва
Сообщений: 509
a_voronin
Focha,

А вы понимаете, что такое неделя ISO? Что первая неделя ISO может начинаться в предыдущем году, а последняя уходить в следующий год.


да
26 авг 19, 17:07    [21957782]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить