我想过滤4月1日至4月22日的日期范围,但只能在晚上8:00之间进行过滤。凌晨6:00,您对此有任何想法吗?到目前为止,我唯一要做的就是日期范围,但我不知道下一步该怎么做。
select * from cdm_service_request_logs
where inserted_at >= '20/04/01 20:00:00%'
and inserted_at < '20/04/22 06:00:00%'
ORDER BY ID DESC;
答案 0 :(得分:0)
我认为您想要这样的东西:
select srl.*
from cdm_service_request_logs srl
where inserted_at >= date '2020-04-01' and
inserted_at < date '2020-04-022' and
extract(hour from inserted_at) not between 6 and 19;
在Oracle中,时间比较通常会使用字符串:
where inserted_at >= date '2020-04-01' and
inserted_at < date '2020-04-022' and
(to_char(inserted_at, 'HH24:MI') >= '20:00' or
to_char(inserted_at, 'HH24:MI') < '06:00'
)
请注意,日期比较使用日期常数值。这是对的。 %
对于日期无效,因此您的比较以字符串形式进行。我只能推测您正在将like
模式与日期常量混淆。如果是这样,那就被误导了。