从时间段 oracle sql 中选择

choose from a time period oracle sql

我在 FIRST_DATE 列中有时间戳日期格式,我需要从某个时间选择时间段,例如。 全部从 18:00 10.05.21 到 18:00 11.05.2021

问题是时间戳格式的日期列 - FIRST_DATE: 10/05/2020 0:00:03,000000 时间戳(6)

所以我尝试使用它:

select
count(*)
from TABLE
where to_char(FIRST_DATE, 'HH24:MI')>='18:00'

所以通过这种方式我可以按时间限制开始时间,但是如果我向其中添加日期,我的条件就会停止工作

and to_char(FIRST_DATE, 'DD-MON-YY')>='10-MAY-21'

如何将我的脚本更正为 select 从 18:00 10.05.21 到 18:00 11.05.2021

不要将日期(或时间戳)与字符串进行比较。 '18:00''10-MAY-21' 字符串 。使用 TO_TIMESTAMP 和适当的格式掩码,例如(第 5 行和第 6 行):

SQL> with test (first_date) as
  2    (select to_timestamp('10/05/2020 23:00:03,000000', 'dd/mm/yyyy hh24:mi:ss,ff3') from dual)
  3  select *
  4  from test
  5  where first_date between to_timestamp('10/05/2020 18:00:00,000000', 'dd/mm/yyyy hh24:mi:ss,ff3')
  6                       and to_timestamp('11/05/2020 18:00:00,000000', 'dd/mm/yyyy hh24:mi:ss,ff3')
  7  /

FIRST_DATE
---------------------------------------------------------------------------
10.05.20 23:00:03,000000000

SQL>