|
Как в запросе поделить время на равные интервалы? | ☑ | ||
---|---|---|---|---|
0
SachoZ
19.10.12
✎
16:07
|
Например надо взять день с 5 утра до 6 вечера и получить каждый час за этот промежуток:
5-6 6-7 7-8 9-10 11-12 ... как сие реализовать в запросе? |
|||
1
1Страх
19.10.12
✎
16:08
|
зачем?
|
|||
2
SachoZ
19.10.12
✎
16:09
|
т.е. в результате выполнения запроса я должен получить таблицу с двумя колонками: ПериодНач и ПериодКон...
|
|||
3
SachoZ
19.10.12
✎
16:10
|
(1) для отображения данных в такой временной сетке....
|
|||
4
МихаилМ
19.10.12
✎
16:10
|
создать временную таблицу
заполнить её интервалами, в запросе соединить с данными по вхождению в интервал, свернуть |
|||
5
Reset
19.10.12
✎
16:11
|
Выбрать 5 Как ПериодНач, 6 как ПериодКон Поместить МояТаблица
Объединить Выбрать 6,7 Объединить Выбрать 7,8 Объединить Выбрать 9,10 Объединить Выбрать 11,12 |
|||
6
SachoZ
19.10.12
✎
16:11
|
(4) "заполнить её интервалами" как?
|
|||
7
SachoZ
19.10.12
✎
16:12
|
(5) а если мне надо менять интервал, скажем не 1 час, а 1.5 или 2 или 3...
|
|||
8
Reset
19.10.12
✎
16:14
|
(7) Тогда начни с определения того, что ты хочешь
|
|||
9
Reset
19.10.12
✎
16:15
|
"А Если" можно говорить до бесконечности, для любого решения
|
|||
10
GLazNik
19.10.12
✎
16:16
|
(7) что мешает подготовить таблицу вне запроса?
|
|||
11
Reset
19.10.12
✎
16:18
|
ну у него написано "как сие реализовать в запросе?".
Хотя это, скорее всего, малозначащая фраза |
|||
12
SachoZ
19.10.12
✎
16:19
|
(10) Да вот похоже, что в цикле сделать таблицу проще чем в запросе.
|
|||
13
SachoZ
19.10.12
✎
16:21
|
Хотелось бы в запрос передать начало и окончание периода, итервал в секундах, а после выполнения запроса получить таблицу периодов ПериодНач и ПериодКон...
|
|||
14
GLazNik
19.10.12
✎
16:23
|
(13) в моем понимании запрос подразумевает работу с базой данных. Какая именно в этом случае работа за базой данных?
|
|||
15
Reset
19.10.12
✎
16:24
|
(13) В запросе циклов нет. То, что ты хочешь, сделать можно, но с большими извратами, необходимость коих сильно сомнительна.
|
|||
16
SachoZ
19.10.12
✎
16:25
|
Без запросов примерно так:
Начало = Дата("00010101000000"); Конец = Дата("00010101000000")60*60*24; Интервал = 60; //сек. Для Тек = Начало По Конец Цикл НачалоИнтервала = Тек; Тек = Тек+Интервал; КонецИнтервала = Тек; Сообщить(НачалоИнтервала+"-"+КонецИнтервала); КонецЦикла; |
|||
17
agorbunov
19.10.12
✎
16:26
|
ВЫБРАТЬ 1 КАК Цифра
ПОМЕСТИТЬ Цифры ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 9 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 10 ; ВЫБРАТЬ А.Цифра*1000 + Б.Цифра*1000 +В.Цифра*10 + Г.Цифра КАК Число ПОМЕСТИТЬ Числа ИЗ Цифры КАК А, Цифры КАК Б, Цифры КАК В, ЦифрыКАК Г ; ВЫБРАТЬ МояТаблица.ПериодНачало, МояТаблица.ПериодОкончание, ДОБАВИТЬКДАТЕ(МояТаблица.ПериодНачало, Числа.Число, СЕКУНДА) КАК ТекущийПериод ИЗ МояТаблица КАК МояТаблица Левое Соединение Числа КАК Числа ПО РАЗНОСТЬДАТ(МояТаблица.ПериодНачало, МояТаблица.ПериодОкончание, СЕКУНДА) < Числа.Число ============================================== Как-то так. Написал по-памяти. |
|||
18
SachoZ
19.10.12
✎
16:28
|
(14) на скл такое можно сделать не извращаясь.
|
|||
19
Reset
19.10.12
✎
16:28
|
(16)Цикл должен быть не "Для" а "Пока"
|
|||
20
agorbunov
19.10.12
✎
16:29
|
(17) Перечитал и нашел косяк. В цифры выбрать последним нужно 0, а не 10. Для твоей задачи подставь период ЧАС.
|
|||
21
GLazNik
19.10.12
✎
16:32
|
(18) скл, это скл. там все через запросы делается. и записи в бд тож через запрос собственно. и циклы там есть и курсоры. и много чего чего нет в 1с
(17) ну собственно на входе все равно треб таблица, которая потом в результате перемножения себя на себя вырастает в здоровую таблицу. Но нафига такой изврат? это же потом нужно уметь еще и прочитать. У 1С есть для таких целей вполне приличный язык. Чего сочинять то... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |