powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Нужно вычислить дату понедельника заданной по номеру недели.
5 сообщений из 5, страница 1 из 1
Нужно вычислить дату понедельника заданной по номеру недели.
    #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
Нужно вычислить дату понедельника заданной по номеру недели.
    #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
Нужно вычислить дату понедельника заданной по номеру недели.
    #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
Нужно вычислить дату понедельника заданной по номеру недели.
    #32017455
Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо )
...
Рейтинг: 0 / 0
Нужно вычислить дату понедельника заданной по номеру недели.
    #32017495
BiSas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мой последний пример ошибочен.
Потому что, надо недели прибавлять не к первому дню года, а к первому понедельнику года.
Так что ваш вариант более правильный. Не обращайте внимания на мой пример.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Нужно вычислить дату понедельника заданной по номеру недели.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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