sql >> Databáze >  >> RDS >> Oracle

ORACLE SQL Rozsah hodin

Předpokládám, že jste převedli formát času na hh24:mi

možná by to mohlo pomoci:

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'
  ;

nebo můžete použít between pro kontrolu start_hour nebo end_hour je mezi hodnotami

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 zde



  1. PHP:Vkládání hodnot z formuláře do MySQL

  2. Funkce plpgsql, která vrací více sloupců, se volá vícekrát

  3. Jedinečná modelová pole v Django nerozlišují malá a velká písmena?

  4. Nelze vydat příkazy pro manipulaci s daty pomocí funkce executeQuery()