|
Сравнение времени в sql запросе
|
|||
---|---|---|---|
#18+
У меня есть запрос в репорте. Нужно вывести все строки из таблицы, где время попадает в заданный диапазон. Сделала совсем простой репорт для тестирования. У меня в таблице хранится время в таком виде hh-mi (часы-минуты), причем тип varchar2. Значения от 00-00 до 12-00 с интервалом в 30 минут. В отчете хочу вывести значения например, с 23-00 до 04-00. Текст запроса: ___________________________________________________ select vremya, to_timestamp(vremya,'hh24 mi') as ddd from vremya where to_timestamp(vremya,'hh24 mi') between to_timestamp('23-00','hh24 mi') and to_timestamp('04-00,'hh24 mi') ___________________________________________________ Он не возвращает ничего! No data found говорит. А они там есть! Причем если искать с 10-00 до 16-00, например, то всё работает правильно. Что я делаю не так?( ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2010, 12:50 |
|
Сравнение времени в sql запросе
|
|||
---|---|---|---|
#18+
JuliaBob, Так ведь 4 утра раньше (т.е. меньше) чем 11 вечера Наверное Ваша задача должна звучать как авторВ отчете хочу вывести значения например, с 23-00 до 04-00 следующего дня , но Ваши данные не содержат информации о дне ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2010, 13:22 |
|
Сравнение времени в sql запросе
|
|||
---|---|---|---|
#18+
Poyasnoy , точно точно. А я чувствую, что что-то не то, а что именно - понять не могу. А это никак нельзя "обойти" запросом? Пользователь выбирает из двух списков времени :"Время от" и "время до", а вывести нужно то, что находится в этом диапазоне... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2010, 13:33 |
|
Сравнение времени в sql запросе
|
|||
---|---|---|---|
#18+
JuliaBob, Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2010, 13:55 |
|
Сравнение времени в sql запросе
|
|||
---|---|---|---|
#18+
Poyasnoy, если сделать: _________________________________________________________ vremya BETWEEN least(23-30,04-00) AND greatest(23-30,04-00) _________________________________________________________ то он выводит с 4 утра до 23-30, а надо наоборот...с 23-30 до 04-00 утра. При преобразовании varchar к timestamp он делает дату вида "первый день месяца+время, которое было в varchar". В этом то вся проблема... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2010, 14:34 |
|
Сравнение времени в sql запросе
|
|||
---|---|---|---|
#18+
Вообще-то, это тема для основного форума Oracle . JuliaBobПри преобразовании varchar к timestamp он делает дату вида "первый день месяца+время, которое было в varchar". В этом то вся проблема... Нет. Вся проблема в том, что Вы не храните даты , но пытаетесь добиться от двух значений суточного времени сравнения, основанного на датах , - как уже заметил Poyasnoy. Вот Вы можете сказать, что было раньше: 04:00 или 16:00 - не зная, к какой дате относится каждое время? И Oracle DB не может. Пересматривайте дизайн, передумывайте отчёт... PS: Вот простой вывод получасов в отрезке времени. Код: plaintext 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2010, 15:46 |
|
Сравнение времени в sql запросе
|
|||
---|---|---|---|
#18+
С форумом ошиблась, ага. Сори, просто по привычку уже пишу в апекс...заработалась) Похоже придется и в самом деле пересматривать отчет...эх, а идея была такой заманчивой. У меня тут еще один вопросик назрел...тему что-то боюсь отдельную создавать, наверняка это просто делается. Вобщем, у меня есть отчет...обычный sql репорт. Я хочу сделать поле "код_таблицы" ссылкой (ColumnLink). Как в запросе обратиться к ссылке, по которой пользователь перешёл? Такого типа: where column= "выбранная ссылка" ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2010, 19:18 |
|
|
start [/forum/topic.php?fid=50&msg=36810443&tid=1876830]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
5ms |
track hit: |
48ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 156ms |
0 / 0 |