Временная метка запроса БД Oracle с лайками и "%" - PullRequest
0 голосов
/ 18 ноября 2018

Я хочу перечислить все записи, чьи TARGET_COMMIT полевые дни между 10 ноября 2018 года и 18 ноября 2018 года около 5 часов утра.Я использовал этот запрос:

select * from (select * from GGS_ADMIN.GGS_HEARTBEAT_HISTORY  
where DELGROUP='REPDELTA' and TARGET_COMMIT between '10/Nov/2018' 
and '18/Nov/2018') where TARGET_COMMIT like '%/Nov/2018 5:%:%.% AM';

Вот одна запись моего внутреннего результата запроса:

SBLPROF,    EDELTA, 11/10/2018 5:56:22.064830 AM,   11/10/2018 
5:56:27.495548 AM,
11/10/2018 5:56:24.731541 AM,   2.666711,               11/10/2018 
5:56:26.305759 AM,  REPDELTA    ,   5.430718,   3,  11/10/2018 
5:56:22.820934 AM,  0,  14441,  0,  14441

А здесь "10.11.2008 5: 56: 27.495548 AM"мое поле TARGET_COMMIT.

Если вместо моего предыдущего запроса использовать

select * from (select * from GGS_ADMIN.GGS_HEARTBEAT_HISTORY where 
DELGROUP='REPDELTA' and TARGET_COMMIT between '10/Nov/2018'  and 
'18/Nov/2018') where TARGET_COMMIT like '11/10/2018 5:56:27.495548 AM'

, оно совпадет и отобразит результат.Почему я не могу использовать функцию «like» и «%» для метки времени?

Кстати, вот мой двойной результат:

select sysdate from dual; 

  SYSDATE                 
11/18/2018 04:11:53 PM 
1 row selected.

Заранее спасибо!

1 Ответ

0 голосов
/ 18 ноября 2018

Вы можете использовать TIMESTAMP литерал и EXTRACT. Предпочтительно использовать >= и < вместо BETWEEN для диапазонов.

SELECT *
FROM ggs_admin.ggs_heartbeat_history
   WHERE delgroup = 'REPDELTA' AND 
   target_commit    >=  TIMESTAMP '2018-11-10 00:00:00' 
AND target_commit   <   TIMESTAMP '2018-11-18 00:00:00' + INTERVAL '1' DAY
AND EXTRACT ( HOUR FROM target_commit) = 5

Если вы хотите желаемый формат, вы также можете использовать

WHERE    
target_commit >=  TO_TIMESTAMP('10/Nov/2018','dd/mon/yyyy')  AND 
target_commit <   TO_TIMESTAMP('18/Nov/2018','dd/mon/yyyy') + INTERVAL '1' DAY
AND EXTRACT ( HOUR FROM target_commit) = 5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...