Sql 带有Like和';%的Oracle DB查询时间戳';
我想列出2018年11月10日至2018年11月18日上午5:00左右其Sql 带有Like和';%的Oracle DB查询时间戳';,sql,database,oracle,timestamp,Sql,Database,Oracle,Timestamp,我想列出2018年11月10日至2018年11月18日上午5:00左右其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 '%/Nov/
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 '%/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
这里的“11/10/2018 5:56:27.495548 AM”是我的目标提交字段
如果使用
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.
提前谢谢 您可以使用
时间戳
文字和提取
。对于范围,最好使用=
和
=时间戳“2018-11-10 00:00:00”
目标提交<时间戳'2018-11-18 00:00:00'+间隔'1'天
和提取(距离目标提交的小时数)=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
在哪里
目标提交>=到时间戳('2018年11月10日','2018年11月10日','dd/mon/yyyy'),以及
目标提交<至时间戳('2018年11月18日','dd/mon/yyyy')+间隔'1'天
和提取(距离目标提交的小时数)=5
您可以使用时间戳
文字和提取
。对于范围,最好使用>=
和
=时间戳“2018-11-10 00:00:00”
目标提交<时间戳'2018-11-18 00:00:00'+间隔'1'天
和提取(距离目标提交的小时数)=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
在哪里
目标提交>=到时间戳('2018年11月10日','2018年11月10日','dd/mon/yyyy'),以及
目标提交<至时间戳('2018年11月18日','dd/mon/yyyy')+间隔'1'天
和提取(距离目标提交的小时数)=5
TARGET\u COMMIT的数据类型是什么?TARGET\u COMMIT TIMESTAMP(6)like
对字符串进行操作,因此在时间戳上使用like
意味着Oracle首先必须将其转换为字符串,如果不指定格式,则效率低下且不可预测,因为在运行时它将被迫依赖会话默认值。TARGET\u COMMIT
的数据类型是什么?TARGET\u COMMIT TIMESTAMP(6)like
对字符串进行操作,因此在时间戳上使用like
意味着Oracle必须首先将其转换为字符串,如果不指定格式,则效率低下且不可预测,因为在运行时它将被迫依赖会话默认值。非常感谢!:)我有问题要问你。我可以使用命令“INTERVAL'1'DAY”和“EXTRACT(HOUR FROM target_commit)=5”,因为“target_commit”是“timestamp”,对吗?还有,为什么要使用“>=”和“@UmutTEKİN:如果你知道它是如何工作的,那么在
之间使用没有什么错。它使用包含范围。因此,你别无选择,只能构造参数x和y,这样它就应该满足a>=x&&a=,非常感谢!:)我有问题要问你。我可以使用命令“INTERVAL'1'DAY”和EXTRACT(HOUR FROM target_commit)=5”,因为“target_commit”是“timestamp”,对吧?还有,如果你知道它是如何工作的,为什么要使用“>=”和“@UmutTEKİN:在
之间使用没有什么错。它使用包含范围。因此,您别无选择,只能构造参数x和y,使其满足a>=x&&a=,