Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Нужно вычислить дату понедельника заданной по номеру недели. / 5 сообщений из 5, страница 1 из 1
20.11.2001, 13:17
    #32017342
Antei
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужно вычислить дату понедельника заданной по номеру недели.
Уважаемые коллеги, подскажите как проще решить задачку: есть номер недели года. Нужно вычислить дату понедельника этой недели. Вот как я (немного подумавши сделал):
это все будет в процедуре, в параметрах - год и номер недели, возвращаться будет дата

set datefirst 1

declare @WeekNumber int
set @WeekNumber=2
declare @Year int
set @Year = year(getdate())
print
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 средства, позволяющие конструировать даты из всяких параметров без склеивания строк?
...
Рейтинг: 0 / 0
21.11.2001, 06:10
    #32017392
BiSas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужно вычислить дату понедельника заданной по номеру недели.
Если тебе не нравится cast, то может быть так:
Но я честно не знаю - что лучше.

set datefirst 1

declare @WeekNumber int
set @WeekNumber=2
declare @Year int
set @Year = year(getdate())
print
dateadd(
week
,
@WeekNumber-1
,
dateadd(
day
,
-1*(datepart(weekday, DateAdd(yy, @Year-1900, 0)) - 1)
,
DateAdd(yy, @Year-1900, 0)
)
)
...
Рейтинг: 0 / 0
21.11.2001, 06:18
    #32017394
BiSas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужно вычислить дату понедельника заданной по номеру недели.
А можно и так, если первая неделя имеет номер 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
...
Рейтинг: 0 / 0
21.11.2001, 13:30
    #32017455
Andrey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужно вычислить дату понедельника заданной по номеру недели.
Спасибо )
...
Рейтинг: 0 / 0
22.11.2001, 06:03
    #32017495
BiSas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужно вычислить дату понедельника заданной по номеру недели.
Мой последний пример ошибочен.
Потому что, надо недели прибавлять не к первому дню года, а к первому понедельнику года.
Так что ваш вариант более правильный. Не обращайте внимания на мой пример.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Нужно вычислить дату понедельника заданной по номеру недели. / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]