选择跨多个日期的特定时间戳间隔

时间:2014-09-20 16:17:20

标签: oracle filter timestamp intervals between

我已尝试在Google及其他各种网站上搜索没有运气,甚至使搜索字词尽可能模糊。

我有多天查询数据,但我只想选择时间介于21:45到22:45之间的数据。

使用整个数据构建的临时表具有从to_date转换为to_char的数据列,因此我需要将其更改回to_date或to_timestamp。

问题是我已经尝试了这两个并获得无效的月错误。例如to_date(complete_date,'hh24:mi:ss')给我错误。

我不确定如何在没有给出硬编码日期的情况下过滤时间戳间隔。

非常感谢提前。我正在使用Oracle Sql,不幸的是我目前没有查询。它在工作的计算机上。如果有回复并且我在工作,我可以回复更多信息。

With details as (
      select to_char(complete_date, 'yyyy-mm-dd hh24:mi:ss') complete_date, 
             to_char(complete_date, 'hh24:mi:ss') as ts from table 
      where complete_date between trunc(sysdate)-30 and trunc(sysdate) )

select * from details where ts between '21:45:00' and '22:45:00'

1 个答案:

答案 0 :(得分:0)

我可以使用以下方式按时间戳过滤:

回合(提取(从to_timestamp开始的小时(complete_date,'yyyy-mm-dd hh24:mi:ss'))+(提取(从to_timestamp开始的分钟(complete_date,'yyyy-mm-dd hh24:mi:ss') )/ 60),2)count_ts

然后在21.75和22.75之间过滤count_ts。这将允许我在这些时间之间获得任何数据,无论白天。

问题解决了。