Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
20.11.2001, 13:17
|
|||
|---|---|---|---|
Нужно вычислить дату понедельника заданной по номеру недели. |
|||
|
#18+
Уважаемые коллеги, подскажите как проще решить задачку: есть номер недели года. Нужно вычислить дату понедельника этой недели. Вот как я (немного подумавши сделал): это все будет в процедуре, в параметрах - год и номер недели, возвращаться будет дата set datefirst 1 declare @WeekNumber int set @WeekNumber=2 declare @Year int set @Year = year(getdate()) dateadd( week , @WeekNumber-1 , dateadd( day , -1*(datepart(weekday, '01.01.' + cast(@Year as varchar(4))) - 1) , '01.01.' + cast(@Year as varchar(4)) ) ) Подскажите плиз, может есть какой-нить другой, более красивый способ? Есть ли в MsSql средства, позволяющие конструировать даты из всяких параметров без склеивания строк? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.11.2001, 06:10
|
|||
|---|---|---|---|
|
|||
Нужно вычислить дату понедельника заданной по номеру недели. |
|||
|
#18+
Если тебе не нравится cast, то может быть так: Но я честно не знаю - что лучше. set datefirst 1 declare @WeekNumber int set @WeekNumber=2 declare @Year int set @Year = year(getdate()) dateadd( week , @WeekNumber-1 , dateadd( day , -1*(datepart(weekday, DateAdd(yy, @Year-1900, 0)) - 1) , DateAdd(yy, @Year-1900, 0) ) ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.11.2001, 06:18
|
|||
|---|---|---|---|
|
|||
Нужно вычислить дату понедельника заданной по номеру недели. |
|||
|
#18+
А можно и так, если первая неделя имеет номер 0. declare @Week int, @FirstDay Datetime set @Week = 1 set @FirstDay = DateAdd(yy, Year(GetDate())-1900, 0) select DateAdd(dd,7*@Week,@FirstDay) Если вести отсчет с недель с 1, то надо отнять 1 при присвоении @Week ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.11.2001, 13:30
|
|||
|---|---|---|---|
Нужно вычислить дату понедельника заданной по номеру недели. |
|||
|
#18+
Спасибо ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.11.2001, 06:03
|
|||
|---|---|---|---|
|
|||
Нужно вычислить дату понедельника заданной по номеру недели. |
|||
|
#18+
Мой последний пример ошибочен. Потому что, надо недели прибавлять не к первому дню года, а к первому понедельнику года. Так что ваш вариант более правильный. Не обращайте внимания на мой пример. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=46&mobile=1&tid=1824902]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
22ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 200ms |
| total: | 293ms |

| 0 / 0 |
