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

Откуда:
Сообщений: 141
Привет!

Подскажите, пожалуйста, как имея год, месяц, неделю получить дату начала и окончания недели?

Спасибо!
22 сен 11, 11:43    [11317718]     Ответить | Цитировать Сообщить модератору
 Re: Имея год, месяц, неделю получить дату начала и окончания недели  [new]
Начинающий SQL 2008
Member

Откуда:
Сообщений: 438
Genniy,

https://www.sql.ru/faq/faq_topic.aspx?fid=998

Еще:
-- Понедельник и воскресенье на этой неделе. Не зависит от "set datefirst" (c) iap
SELECT DATEADD(DAY, DATEDIFF(DAY,0, GETDATE())/7*7,0)[Понедельник], DATEADD(DAY, DATEDIFF(DAY,0, GETDATE())/7*7+6,0)[Воскресенье];

-- Найти понедельник и воскресенье на ПРОШЛОЙ неделе. Не зависит от "set datefirst" (c) iap
select dateadd(day, datediff(day,0, getdate())/7*7-7,0)[Понедельник], dateadd(day, datediff(day,0, getdate())/7*7-1,0)[Воскресенье];
22 сен 11, 11:46    [11317768]     Ответить | Цитировать Сообщить модератору
 Re: Имея год, месяц, неделю получить дату начала и окончания недели  [new]
Genniy
Member

Откуда:
Сообщений: 141
Начинающий SQL 2008,
Спасибо, подборочка ещё та, но она не решает мою проблему.
Неделя у меня в виде числа, а не даты.
22 сен 11, 11:50    [11317808]     Ответить | Цитировать Сообщить модератору
 Re: Имея год, месяц, неделю получить дату начала и окончания недели  [new]
Glory
Member

Откуда:
Сообщений: 104751
Genniy
Неделя у меня в виде числа,

Номер недели в году ? Или в месяце ?
22 сен 11, 11:51    [11317820]     Ответить | Цитировать Сообщить модератору
 Re: Имея год, месяц, неделю получить дату начала и окончания недели  [new]
Genniy
Member

Откуда:
Сообщений: 141
Glory,
в году.
22 сен 11, 11:52    [11317844]     Ответить | Цитировать Сообщить модератору
 Re: Имея год, месяц, неделю получить дату начала и окончания недели  [new]
Glory
Member

Откуда:
Сообщений: 104751
Genniy
Glory,
в году.

По какому из стандартов ?
22 сен 11, 11:56    [11317887]     Ответить | Цитировать Сообщить модератору
 Re: Имея год, месяц, неделю получить дату начала и окончания недели  [new]
Genniy
Member

Откуда:
Сообщений: 141
Glory,
??? не понял
22 сен 11, 13:26    [11318759]     Ответить | Цитировать Сообщить модератору
 Re: Имея год, месяц, неделю получить дату начала и окончания недели  [new]
SamMan
Member

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

Рекомендации по оформлению сообщений в форуме
22 сен 11, 13:28    [11318770]     Ответить | Цитировать Сообщить модератору
 Re: Имея год, месяц, неделю получить дату начала и окончания недели  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Genniy
Glory,
??? не понял
6.7. Что такое номер недели?
И версию сервера скажите.
22 сен 11, 13:29    [11318781]     Ответить | Цитировать Сообщить модератору
 Re: Имея год, месяц, неделю получить дату начала и окончания недели  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
iap
Genniy
Glory,
??? не понял
6.7. Что такое номер недели?
И версию сервера скажите.
Или 1 января всегда в первой неделе?
А неделя начинается в воскресенье, как в США?
Или в понедельник, как в России?
22 сен 11, 13:31    [11318802]     Ответить | Цитировать Сообщить модератору
 Re: Имея год, месяц, неделю получить дату начала и окончания недели  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
И зачем нужен месяц, если есть номер недели?
То есть, они могут противоречить друг другу?
22 сен 11, 13:34    [11318834]     Ответить | Цитировать Сообщить модератору
 Re: Имея год, месяц, неделю получить дату начала и окончания недели  [new]
Glory
Member

Откуда:
Сообщений: 104751
Genniy
Glory,
??? не понял

Существует несколько стандартов нумерации недель в году
Ваш номер по какому стандарту вычислен ?
22 сен 11, 13:37    [11318877]     Ответить | Цитировать Сообщить модератору
 Re: Имея год, месяц, неделю получить дату начала и окончания недели  [new]
Genniy
Member

Откуда:
Сообщений: 141
iap,
сервер 2008 R2

select datediff (week, '20110101', '20110102')
========
1

select datediff (week, '20110101', '20110109')
========
2
22 сен 11, 13:39    [11318909]     Ответить | Цитировать Сообщить модератору
 Re: Имея год, месяц, неделю получить дату начала и окончания недели  [new]
лошадь е4
Guest
Genniy
iap,
сервер 2008 R2

select datediff (week, '20110101', '20110102')
========
1

select datediff (week, '20110101', '20110109')
========
2

и обратный ход, наверное, dateadd(ww, ...)?
22 сен 11, 13:43    [11318959]     Ответить | Цитировать Сообщить модератору
 Re: Имея год, месяц, неделю получить дату начала и окончания недели  [new]
конь e5
Guest
начало недели как-то так:
declare @date date = getdate()
select dateadd(dd, case when @@DATEFIRST = 7 then 2 else 1 end -datepart(weekday, @date), @date)
окончание аналогично
22 сен 11, 13:47    [11319001]     Ответить | Цитировать Сообщить модератору
 Re: Имея год, месяц, неделю получить дату начала и окончания недели  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Genniy
iap,
сервер 2008 R2

select datediff (week, '20110101', '20110102')
========
1

select datediff (week, '20110101', '20110109')
========
2
SET NOCOUNT ON;
SET DATEFIRST 1;
select datediff (week, '20110101', '20110105')
SET DATEFIRST 2;
select datediff (week, '20110101', '20110105')
SET DATEFIRST 3;
select datediff (week, '20110101', '20110105')
SET DATEFIRST 4;
select datediff (week, '20110101', '20110105')
SET DATEFIRST 5;
select datediff (week, '20110101', '20110105')
SET DATEFIRST 6;
select datediff (week, '20110101', '20110105')
SET DATEFIRST 7;
select datediff (week, '20110101', '20110105')
И что? Функция DATEDIFF(WEEK,...) ВСЕГДА работает по-американски (неделя начинается в воскресенье).
Так что Ваши запросы ни о чём не говорят.
22 сен 11, 13:50    [11319039]     Ответить | Цитировать Сообщить модератору
 Re: Имея год, месяц, неделю получить дату начала и окончания недели  [new]
пони V8
Guest
iap,

лошадь, конечно, не спрашивали, но ТС вроде продемонстрировал как он эти номера недель получил, не?
22 сен 11, 13:56    [11319096]     Ответить | Цитировать Сообщить модератору
 Re: Имея год, месяц, неделю получить дату начала и окончания недели  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
пони V8
iap,

лошадь, конечно, не спрашивали, но ТС вроде продемонстрировал как он эти номера недель получил, не?
Зато я задал несколько вопросов TC и одну поучительную ссылку,
но получил от него только один ответ про версию.
22 сен 11, 14:02    [11319143]     Ответить | Цитировать Сообщить модератору
 Re: Имея год, месяц, неделю получить дату начала и окончания недели  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
SET NOCOUNT ON;
SET DATEFIRST 7;/*Юнайтед стэйт оф-таки Америка! ©*/
DECLARE @Y CHAR(4)='2011', @W INT=5;
SELECT
 DATEADD(DAY, DATEDIFF(DAY,0, DATEADD(WEEK,@W,@Y))/7*7-1,0)[Первый день недели - воскресенье],
 DATEADD(DAY, DATEDIFF(DAY,0, DATEADD(WEEK,@W,@Y))/7*7+5,0)[Последний день недели - суббота];
22 сен 11, 14:13    [11319232]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить