从时间段 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>
我在 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>