Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Sql2014, SELECT DateDiff(ww,'20171001','20171031')+1 почему не 6?  [new]
Pvase
Member

Откуда:
Сообщений: 984
Пишу следующее:
Set DateFirst 1
SELECT DateDiff(ww,'20171001','20171031')+1

В ответ 5, но смотря в календарь вижу что все таки 6. Что не так, как исправить? Писать только свою функцию или есть другой выход?
25 окт 17, 16:49    [20899774]     Ответить | Цитировать Сообщить модератору
 Re: Sql2014, SELECT DateDiff(ww,'20171001','20171031')+1 почему не 6?  [new]
Pvase
Member

Откуда:
Сообщений: 984
Такое предположение, что оно считает не количество недель, а количество изменений дня в неделю на другой день, и судя по всему это не Воскресенье. И наверное Set DateFirst 1 никак не влияет на эту функцию.
25 окт 17, 16:54    [20899794]     Ответить | Цитировать Сообщить модератору
 Re: Sql2014, SELECT DateDiff(ww,'20171001','20171031')+1 почему не 6?  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1172
Pvase,

Указание SET DATEFIRST не влияет на DATEDIFF. DATEDIFF всегда считает воскресенье первым днем недели, чтобы обеспечить детерминистичность работы функции.
25 окт 17, 16:59    [20899814]     Ответить | Цитировать Сообщить модератору
 Re: Sql2014, SELECT DateDiff(ww,'20171001','20171031')+1 почему не 6?  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1172
+

Считайте в декадах
25 окт 17, 17:00    [20899819]     Ответить | Цитировать Сообщить модератору
 Re: Sql2014, SELECT DateDiff(ww,'20171001','20171031')+1 почему не 6?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
SELECT DATEPART(ww,'20171031') - DATEPART(ww,'20171001') +1
SELECT DATEPART(iso_week,'20171031') - DATEPART(iso_week,'20171001') +1


но в декадах логичнее
25 окт 17, 17:04    [20899840]     Ответить | Цитировать Сообщить модератору
 Re: Sql2014, SELECT DateDiff(ww,'20171001','20171031')+1 почему не 6?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36699
Пища для размышлений:

Set DateFirst 1
SELECT DateDiff(ww,'20171001','20171031')+1
SELECT datepart(week,'20171001'), datepart(week,'20171031'), datepart(week,'20171031') - datepart(week,'20171001') + 1
SELECT DateDiff(day,'20171001','20171031') / 7 + 1
25 окт 17, 17:05    [20899843]     Ответить | Цитировать Сообщить модератору
 Re: Sql2014, SELECT DateDiff(ww,'20171001','20171031')+1 почему не 6?  [new]
Pvase
Member

Откуда:
Сообщений: 984
Спасибо.
25 окт 17, 17:34    [20899931]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить