Не понимаю

bonzadk

почему
select datediff(wk,'11.12.2005','09.12.2005')
возвращает -1 когда это одна и та же неделя?
13 ответов

bonzadk

потому что формат даты неправильный


bonzadk

у меня он вообще -8 возвращает


bonzadk

или, что еще хуже, нужно поменять местами даты


bonzadk

2VirusXPset dateformat dmy


bonzadk

потому что формат даты неправильный
Не в этом дело. Функция datediff, вполне возможно, считает кол-во каких-то определенных дней недели, например воскресений, между датами; надо проверять. Во всяком случае можно воспользоваться ф-ией datepart:
select datepart(week, '2005-12-11') - datepart(week, '2005-12-09')


bonzadk

А неделя с которого дня начинается: как у нас в понедельника или как у них с воскресенья? См. set datefirst


bonzadk

Что вернет print @@datefirst?


bonzadk

Что вернет print @@datefirst?
Я в начале скрипта ставил всякий datefirst - ничего не меняло.
Не в этом дело. Функция datediff, вполне возможно, считает кол-во каких-то определенных дней недели, например воскресений, между датами; надо проверять. Во всяком случае можно воспользоваться ф-ией datepart:select datepart(week, '2005-12-11') - datepart(week, '2005-12-09')
Сейчас попробую!


bonzadk

у меня он вообще -8 возвращает
У меня тоже теперь -8 возвращает... жуть!


bonzadk

А вообще изначально задача была отобрать даты, попадающие в текущую неделю. Может я не туда копаю? Но пока есть вот такой вариант:
datediff(ww, dateadd(yy, year(GETDATE()) - year([Дата рождения]), dateadd(day,-<b>1</b>,[Дата рождения])), GETDATE()) = <b>0</b>


bonzadk

Не в этом дело. Функция datediff, вполне возможно, считает кол-во каких-то определенных дней недели, например воскресений, между датами; надо проверять. Во всяком случае можно воспользоваться ф-ией datepart:
Спасибо, вариант
(datepart(week, dateadd(yy, year('18.12.2005') - year([Дата рождения]),dateadd(day,<b>0</b>,[Дата рождения]))) - datepart(week, '2005-12-12'))=<b>0</b>
работает на 100%!!!


bonzadk

Должно быть так:дни рождения, попадающие в текущую неделю
SET DATEFIRST <b>1</b> -- важно!
(datepart(week, dateadd(yy, year(GETDATE()) - year([Дата рождения]),[Дата рождения])) - datepart(week, GETDATE()))=<b>0</b>


bonzadk

select datediff(wk,'12.10.2005','12.25.2005')