Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как выбрать записи старше 5 минут в Oracle? запрос 
:(
    Опции темы
RollerCoaster
Дата 1.9.2009, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 15.8.2006

Репутация: нет
Всего: нет



Здравствуйте, уважаемые форумчане!!!
Помогите, пожалуйста, составить запрос

В таблице есть поле(TIMESTAMP) с временем записи в таблицу. Как по этому полю выбрать записи старше 5-ти минут?
PM MAIL   Вверх
DimW
Дата 1.9.2009, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 23
Всего: 44



Цитата(RollerCoaster @  1.9.2009,  10:12 Найти цитируемый пост)
Как по этому полю выбрать записи старше 5-ти минут?

поясните что имеете ввиду?
старше по отношению к чему?
PM MAIL ICQ   Вверх
RollerCoaster
Дата 1.9.2009, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 15.8.2006

Репутация: нет
Всего: нет



Цитата(DimW @ 1.9.2009,  10:20)
Цитата(RollerCoaster @  1.9.2009,  10:12 Найти цитируемый пост)
Как по этому полю выбрать записи старше 5-ти минут?

поясните что имеете ввиду?
старше по отношению к чему?

по отношению к текущему времени. то есть есть поле в котором указано время и дата добавление записи. нужен запрос который выведет все записи старше 5-ти минут по отношениб к текущему времени smile 
PM MAIL   Вверх
DimW
Дата 1.9.2009, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 23
Всего: 44



как то так:
Код

select *
  from table_test
 where to_number(to_char(date_field, 'yyyymmddhh24mi')) -
       to_number(to_char(current_date, 'yyyymmddhh24mi')) >= 5

PM MAIL ICQ   Вверх
DimW
Дата 1.9.2009, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 23
Всего: 44



Цитата(RollerCoaster @  1.9.2009,  10:12 Найти цитируемый пост)
В таблице есть поле(TIMESTAMP)

кстати какой из трех типов TIMESTAMP вы используете:
TIMESTAMP, TIMESTAMP WITH TIMEZONE или TIMESTAMP WITH LOCAL TIMEZONE.
вслучае с первым достаточно использовать sysdate вместо current_date.
PM MAIL ICQ   Вверх
RollerCoaster
Дата 1.9.2009, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 15.8.2006

Репутация: нет
Всего: нет



Тип поля на самом деле DATE smile При чем надо учитывать только время без даты (так как дата стоит  там стоит 01.01.1899 smile) ) Получается в моем случае, как я понимаю,  нужно:

Код

select *
  from table_test
 where to_number(to_char(date_field, 'hh24mi')) -
       to_number(to_char(current_date, 'hh24mi')) >= 5



Так?
PM MAIL   Вверх
DimW
Дата 1.9.2009, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 23
Всего: 44



Цитата(RollerCoaster @  1.9.2009,  11:21 Найти цитируемый пост)
Тип поля на самом деле DATE

тогда current_date замените на sysdate, ибо бестолково это...

Цитата(RollerCoaster @  1.9.2009,  11:21 Найти цитируемый пост)
как я понимаю

правильно понимаете.

Это сообщение отредактировал(а) DimW - 1.9.2009, 11:30
PM MAIL ICQ   Вверх
RollerCoaster
Дата 1.9.2009, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 15.8.2006

Репутация: нет
Всего: нет



DimW, спасибо большое тебе за помощь!!!!!!
PM MAIL   Вверх
LSD
Дата 1.9.2009, 11:51 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 18
Всего: 538



По моему будет проще:
Код

select *
  from table_test
 where date_field < sys_date - (5 / (24 * 60))



--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Zloxa
Дата 1.9.2009, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 37
Всего: 161



Код

select *
  from table_test
 where date_field < systimestamp/*или sysdate*/ - interval '5' minute



--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
DimW
Дата 1.9.2009, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 23
Всего: 44



я вот только не пойму почему знак "меньше" и 5 минут отнимаете от sysdate?

допустим sysdate = 13:00

в таблице:
1) 13:00
2) 13:05
3) 13:10

результат должен быть таким:
2) 13:05
3) 13:10

по вашей логике такой результат не получится:
13:00 < 12:55
13:05 < 12:55
13:10 < 12:55


PM MAIL ICQ   Вверх
Zloxa
Дата 1.9.2009, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 37
Всего: 161



Цитата(RollerCoaster @  1.9.2009,  10:12 Найти цитируемый пост)
выбрать записи старше 5-ти минут 

DimW, старше значит живут больше, родились раньше.
Чем меньше дата рожденя тем старше сущность.
Исходя из этоой логики, результат приведенного примера будет пустым.
а неравентства, приведенные тобой не верны


Это сообщение отредактировал(а) Zloxa - 1.9.2009, 13:05


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
DimW
Дата 1.9.2009, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 23
Всего: 44



Цитата(Zloxa @  1.9.2009,  13:03 Найти цитируемый пост)
старше значит живут больше

опаньки, произошла подмена понятий, старше и больше  smile 

накуролесил я короче, извиняюсь.

Цитата(LSD @  1.9.2009,  11:51 Найти цитируемый пост)
По моему будет проще:

да smile

Zloxa, за interval спасибо, как то он мимо меня проскачил.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Oracle"
Zloxa
LSD

Данный раздел предназначен для обсуждения проблем с Oracle Database, другие продукты Oracle здесь не обсуждаются. Просьба при создании темы, придерживаться следующих правил:

  • при создании темы давайте ей осмысленное название, описывающее суть проблемы
  • указывайте используемую версию базы, способ соединения и язык программирования
  • при ошибках обязательно приводите код ошибки и сообщение сервера
  • приводите код в котором возникла ошибка, по возможности дайте тестовый пример демонстрирующий ошибку
  • при вставке кода используйте соответсвующие теги: [code=sql] [/code] для подсветки SQL и PL/SQL кода, [code=java] [/code] - для Java, и т.д.

  • документация по Oracle: 9i, 10g, 11g
  • книги по Oracle можно поискать здесь
  • действия модераторов можно обсудить здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, LSD.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Oracle | Следующая тема »


 




[ Время генерации скрипта: 0.1125 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.