Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Oracle > Как выбрать записи старше 5 минут в Oracle?


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

В таблице есть поле(TIMESTAMP) с временем записи в таблицу. Как по этому полю выбрать записи старше 5-ти минут?

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

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

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

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

по отношению к текущему времени. то есть есть поле в котором указано время и дата добавление записи. нужен запрос который выведет все записи старше 5-ти минут по отношениб к текущему времени smile 

Автор: DimW 1.9.2009, 10:34
как то так:
Код

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

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

кстати какой из трех типов TIMESTAMP вы используете:
TIMESTAMP, TIMESTAMP WITH TIMEZONE или TIMESTAMP WITH LOCAL TIMEZONE.
вслучае с первым достаточно использовать sysdate вместо current_date.

Автор: RollerCoaster 1.9.2009, 11:21
Тип поля на самом деле 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



Так?

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

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

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

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

Автор: RollerCoaster 1.9.2009, 11:51
DimW, спасибо большое тебе за помощь!!!!!!

Автор: LSD 1.9.2009, 11:51
По моему будет проще:
Код

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

Автор: Zloxa 1.9.2009, 12:13
Код

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

Автор: DimW 1.9.2009, 12:58
я вот только не пойму почему знак "меньше" и 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


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

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

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

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

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

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

да smile

Zloxa, за interval спасибо, как то он мимо меня проскачил.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)