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

Откуда: Украина г. Хмельницкий
Сообщений: 628
Возможно ли средствами SQL определить какие даты попадают на сб-вс за указаный период? Большое спасибо!
22 июн 16, 15:31    [19323318]     Ответить | Цитировать Сообщить модератору
 Re: Определить суботы я воскресения в указаном периоде  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
Получить указанный период в виде списка дат и применить к каждой дате функцию datepart.

Сообщение было отредактировано: 22 июн 16, 15:33
22 июн 16, 15:33    [19323327]     Ответить | Цитировать Сообщить модератору
 Re: Определить суботы я воскресения в указаном периоде  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
Список дат +
WHERE DATEDIFF(DAY,0,Дата)%7 IN(5,6)
или
WHERE (@@DATEFIRST+DATEPART(WEEKDAY,Дата))%7 IN(0,1)
22 июн 16, 16:27    [19323605]     Ответить | Цитировать Сообщить модератору
 Re: Определить суботы я воскресения в указаном периоде  [new]
Mairos
Member

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

;with day_list(date_m) as
(
select cast('01.01.2012' as date) as date_m
  union all
select dateadd(dd,1,date_m) as date_m
from day_list
where date_m< '02.01.2012'
)
 select date_m, case when datepart(weekday,date_m) = 6 then 'Суббота' else 'Воскресенье' end
from day_list
where datepart(weekday,date_m) in (6,7)
23 июн 16, 12:10    [19325631]     Ответить | Цитировать Сообщить модератору
 Re: Определить суботы я воскресения в указаном периоде  [new]
Maxx
Member [скрыт]

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

только при условии "русского" сервера
23 июн 16, 12:26    [19325724]     Ответить | Цитировать Сообщить модератору
 Re: Определить суботы я воскресения в указаном периоде  [new]
o-o
Guest
Mairos
shanton,

;with day_list(date_m) as
(
select cast('01.01.2012' as date) as date_m
  union all
select dateadd(dd,1,date_m) as date_m
from day_list
where date_m< '02.01.2012'
)
 select date_m, case when datepart(weekday,date_m) = 6 then 'Суббота' else 'Воскресенье' end
from day_list
where datepart(weekday,date_m) in (6,7)

взял и сделал и языконезависимого кода без рекурсии
тормознуху с неправильными днями.
а заодно и кириллицу похерил.
вывешиваю иллюстрацию к наглядному пособию "как делать не надо"

К сообщению приложен файл. Размер - 57Kb
23 июн 16, 12:27    [19325729]     Ответить | Цитировать Сообщить модератору
 Re: Определить суботы я воскресения в указаном периоде  [new]
Mairos
Member

Откуда:
Сообщений: 555
o-o, я и спорить не буду - просто рекурсию использовал для создания последовательности дат, не более. Ну а с языконезависимостью вы правы. ))
23 июн 16, 13:01    [19325915]     Ответить | Цитировать Сообщить модератору
 Re: Определить суботы я воскресения в указаном периоде  [new]
shanton
Member

Откуда: Украина г. Хмельницкий
Сообщений: 628
Всем спасибо! Получилось вот так:
DECLARE @DAT VARCHAR(8), @PR_WD INT
SET @DAT = CONVERT (VARCHAR(8), GETDATE(),112)
SET @PR_WD = (@@DATEFIRST+DATEPART(WEEKDAY, @DAT))%7
SELECT CASE WHEN @PR_WD = 0 THEN 'сб' WHEN @PR_WD = 1 THEN 'нд' WHEN @PR_WD = 2 THEN 'пн' WHEN @PR_WD = 3 THEN 'вт' WHEN @PR_WD = 4 THEN 'ср' WHEN @PR_WD = 5 THEN 'чт' WHEN @PR_WD = 6 THEN 'пт' ELSE SPACE(2) END
23 июн 16, 14:58    [19326601]     Ответить | Цитировать Сообщить модератору
 Re: Определить суботы я воскресения в указаном периоде  [new]
o-o
Guest
shanton
WHEN @PR_WD = 0 THEN 'сб' WHEN @PR_WD = 1 THEN 'нд'

нд = НеДень?
23 июн 16, 15:19    [19326696]     Ответить | Цитировать Сообщить модератору
 Re: Определить суботы я воскресения в указаном периоде  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
o-o
нд = НеДень?

Неділя
23 июн 16, 15:28    [19326734]     Ответить | Цитировать Сообщить модератору
 Re: Определить суботы я воскресения в указаном периоде  [new]
shanton
Member

Откуда: Украина г. Хмельницкий
Сообщений: 628
нд=вс
23 июн 16, 16:34    [19327061]     Ответить | Цитировать Сообщить модератору
 Re: Определить суботы я воскресения в указаном периоде  [new]
o-o
Guest
-- а почему "ы"?
-- чтоб никто не догадался
(c)
23 июн 16, 16:44    [19327124]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить