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

Откуда:
Сообщений: 11
Всем доброго времени суток.
Такой вопрос.
Есть таблица вида:
IDDateTimeValue
12013-09-10 20:00:00.000100
12013-09-11 08:00:00.000150
12013-09-11 20:00:00.000120

Надо разбить на интервалы по 2 часа, т.е. результат запроса должен иметь вид:
IDDateTimeValue
12013-09-10 20:00:00.000100
12013-09-10 22:00:00.000100
12013-09-11 00:00:00.000100
12013-09-11 02:00:00.000100
12013-09-11 04:00:00.000100
12013-09-11 06:00:00.000100
12013-09-11 08:00:00.000150
12013-09-11 10:00:00.000150
12013-09-11 12:00:00.000150
12013-09-11 14:00:00.000150
12013-09-11 16:00:00.000150
12013-09-11 18:00:00.000150
12013-09-11 20:00:00.000120
21 окт 13, 08:01    [15006198]     Ответить | Цитировать Сообщить модератору
 Re: Как разбить интервал дат по часам???  [new]
aleks2
Guest
Как-то так?

https://www.sql.ru/forum/1053553/podskazhite-kak-poluchit-vremya-po-intervalu
21 окт 13, 08:18    [15006216]     Ответить | Цитировать Сообщить модератору
 Re: Как разбить интервал дат по часам???  [new]
V.Zarubin
Member

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

нет, это не то....
мне надо не просто разбить по часам а еще присвоить значение....
22 окт 13, 09:59    [15012292]     Ответить | Цитировать Сообщить модератору
 Re: Как разбить интервал дат по часам???  [new]
aleks2
Guest
V.Zarubin
aleks2,

нет, это не то....
мне надо не просто разбить по часам а еще присвоить значение....

Ну и в чем проблемы?
Не способны указать еще одно поле в списке полей?
Двигайте в управдомы.
22 окт 13, 10:09    [15012354]     Ответить | Цитировать Сообщить модератору
 Re: Как разбить интервал дат по часам???  [new]
LexusR
Member

Откуда: Novosibirsk
Сообщений: 1887
;WITH ST(ID,DateTime,value,N)AS
(SELECT ID,DateTime,value,ROW_NUMBER()OVER(PARTITION BY ID ORDER BY DateTIME)
 FROM @Table t1) 
,CTE(ID,DateTime,value,EndDate) AS
(SELECT t1.ID,t1.DateTime,t1.value,ISNULL(t2.DateTime,t1.DateTime) as EndDate 
 FROM ST t1
 LEFT JOIN ST t2 ON t2.N= t1.N+1
UNION ALL  
SELECT t1.ID
,DATEADD(hh,2,t1.[DateTime])
,t1.value
,t1.EndDate 
FROM CTE t1
WHERE DATEADD(hh,2,t1.[DateTime])< t1.EndDate 
 )
SELECT ID,DateTime,value FROM CTE ORDER BY ID,[DateTime]
22 окт 13, 11:03    [15012725]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить