Oracle
 sql >> Baza danych >  >> RDS >> Oracle

ORACLE SQL Zakres godzin

Zakładam, że przekonwertowałeś swój format czasu na hh24:mi

może to mogłoby pomóc:

with tab as(
select 'date1' as dat,  '09:00' as  start_hour, '09:30' as end_hour from dual union all
select 'date1' as dat,  '10:30' as  start_hour, '11:30' as end_hour from dual union all
select 'date1' as dat,  '13:00' as  start_hour, '15:00' as end_hour from dual 
)
SELECT COUNT(*)
  FROM   tab
  WHERE  start_hour <= '09:10' --:new_end_hour
  AND    end_hour   >= '07:00' --:new_start_hour
  AND    dat = 'date1'
  ;

lub możesz użyć between aby to sprawdzić start_hour lub end_hour jest między wartościami

with tab as(
select 'date1' as dat,  '09:00' as  start_hour, '09:30' as end_hour from dual union all
select 'date1' as dat,  '10:30' as  start_hour, '11:30' as end_hour from dual union all
select 'date1' as dat,  '13:00' as  start_hour, '15:00' as end_hour from dual 
)
SELECT COUNT(*)
  FROM   tab
  WHERE  ('09:00' between start_hour and end_hour
  or    '09:10' between start_hour and end_hour
  )
  AND    dat = 'date1'
  ;

db<>fiddle tutaj



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mechanizm wstawiania bazy danych

  2. Pytanie PreparedStatement w Javie przeciwko Oracle

  3. Wstaw wartość domyślną po wstawieniu null

  4. Jak uzyskać skrypt tabeli w Oracle SQL Developer?

  5. Co robi (+) w Oracle SQL?