Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как получить дату дня недели на MS SQL Server 7.0

1.1K
14 августа 2001 года
Danchik
4 / / 20.04.2000
Очень хочется получить дату дня недели (например понеделника) зная год и номер недели на MS SQL 7.0. Что-то вроде: Какое число будет понеделник 27'ой недели 2001'го года? Единственное решение которое с ходу приходит в голову - создать таблицу в которой были бы все даты за несколько лет и потом сравнивать по DatePart year, week, weekday. Но уж больно топорный вариант получается, хочется чего-нибудь более элегантного.
372
14 августа 2001 года
Flying
312 / / 20.09.2000
<TABLE BORDER=0 ALIGN=CENTER WIDTH=85%><TR><TD>Quote:<HR></TD></TR><TR><TD><FONT SIZE=-1><BLOCKQUOTE>
On 2001-08-14 12:12, Danchik wrote:
Очень хочется получить дату дня недели (например понеделника) зная год и номер недели на MS SQL 7.0. Что-то вроде: Какое число будет понеделник 27'ой недели 2001'го года? Единственное решение которое с ходу приходит в голову - создать таблицу в которой были бы все даты за несколько лет и потом сравнивать по DatePart year, week, weekday. Но уж больно топорный вариант получается, хочется чего-нибудь более элегантного.
</BLOCKQUOTE></FONT></TD></TR><TR><TD><HR></TD></TR></TABLE>

В MSSQL есть встроенные функции для работы с датами. Смотри документацию на MS SQL, функция называется DATEPART() вроде.
1.1K
14 августа 2001 года
Danchik
4 / / 20.04.2000
Задача была немного не такая... Надо было не из даты получить ее части, а наоборот собрать из дня недели, номера недели и года получить полноценную дату. Нужно было для одного хитрого понедельного отчета. И я ее таки зарешал... Немного коряво выглядит, но дело делает.
Вот чтобы получить воскресенье 27 недели 2001 года
dateadd(day, -1, dateadd(week, 27-1, dateadd(year, 2001-1900,'01/01/1900')))

P.S. Первый день по штатовски - воскресенье
@@DATEFIRST=7
Аноним
Цитата:

On 2001-08-14 1522, Flying wrote
[quote]
On 2001-08-14 1212, Danchik wrote
Очень хочется получить дату дня недели (например понеделника) зная год и номер недели на MS SQL 7.0. Что-то вроде Какое число будет понеделник 27'ой недели 2001'го года? Единственное решение которое с ходу приходит в голову - создать таблицу в которой были бы все даты за несколько лет и потом сравнивать по DatePart year, week, weekday. Но уж больно топорный вариант получается, хочется чего-нибудь более элегантного.



В MSSQL есть встроенные функции для работы с датами. Смотри документацию на MS SQL, функция называется DATEPART() вроде.
[/quote]

93K
26 марта 2014 года
nazardeev
1 / / 26.03.2014
столкнулся с такой же проблемой, нужно было находить дату на понедельник имея номер недели, который брался с new_data,
Решил написать простой кейс:
CASE
WHEN DATEPART(weekday, new_data) = 1 THEN new_data
WHEN DATEPART(weekday, new_data) = 2 THEN dateadd(day, - 1, new_data)
WHEN DATEPART(weekday, new_data) = 3 THEN dateadd(day, - 2, new_data)
WHEN DATEPART(weekday, new_data) = 4 THEN dateadd(day, - 3, new_data)
WHEN DATEPART(weekday, new_data) = 5 THEN dateadd(day, - 4, new_data)
WHEN DATEPART(weekday, new_data) = 6 THEN dateadd(day, - 5, new_data)
WHEN DATEPART(weekday, new_data) = 7 THEN dateadd(day, - 6, new_data)
END
1
29 марта 2014 года
kot_
7.3K / / 20.01.2000
это хорошо. но надо учитывать региональные особенности. Не у всех неделя начинаеться с понедельника. У большинства - в воскресенья. Но в целом - как вариант.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог