我已尝试在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'
答案 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。这将允许我在这些时间之间获得任何数据,无论白天。
问题解决了。