Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

SQL Query untuk mengonversi ekspresi cron ke format tanggal/waktu

Anda dapat menggunakan regexp_substr berfungsi untuk mengekstrak elemen individual dari tupel jadwal. Misalnya regexp_substr(schedule, '[0-9*]+', 1,1) akan mengekstrak elemen menit, sementara regexp_substr(sched, '[0-9*]+', 1, 2) akan mengekstrak elemen jam. Parameter ke-4 memilih elemen yang diinginkan. Anda kemudian dapat menggunakan EXTRACT atau TO_CHAR berfungsi untuk mendapatkan berbagai bagian stempel waktu Anda untuk perbandingan.

with cron(ID, Sched) as (
  select 102, '00 9 * * * *' from dual
), exec(id, ts) as (
  select 102, to_timestamp('2017-11-05 9:00:00', 'yyyy-mm-dd hh24:mi:ss') from dual union all
  select 102, to_timestamp('2017-11-05 9:05:00', 'yyyy-mm-dd hh24:mi:ss') from dual
), c2 as (
select id
     , sched 
     , regexp_substr(sched,'[0-9*]+',1,1) min
     , regexp_substr(sched,'[0-9*]+',1,2) hour
     , regexp_substr(sched,'[0-9*]+',1,3) day
     , regexp_substr(sched,'[0-9*]+',1,4) mon
     , regexp_substr(sched,'[0-9*]+',1,5) wday
     , regexp_substr(sched,'[0-9*]+',1,6) year
  from cron
)
select c2.*
     , exec.ts
     , case when (year = '*' or to_number(to_char(ts,'yyyy')) = to_number(year))
             and (mon  = '*' or to_number(to_char(ts,'mm')  ) = to_number(mon ))
             and (day  = '*' or to_number(to_char(ts,'dd')  ) = to_number(day ))
             and (hour = '*' or to_number(to_char(ts,'hh24')) = to_number(hour))
             and (min  = '*' or to_number(to_char(ts,'mi')  ) = to_number(min ))
             and (wday = '*' or to_number(to_char(ts,'d')   ) = to_number(wday))
            then 'OK'
            else 'KO'
       end Match
  from exec 
  join c2 
    on c2.id = exec.id;

pindahkan ekspresi logis dari pernyataan kasus sebagian atau seluruhnya sesuai kebutuhan untuk mendapatkan hasil yang Anda butuhkan.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara membaca dan menyimpan data XML dalam database

  2. Cara Memeriksa Indeks di Oracle

  3. Menambahkan tag Html ke dalam judul kueri Pohon di Oracle APEX

  4. Dokumentasi MAA untuk Oracle Cloud

  5. Bagaimana saya bisa menggunakan jaro-winkler untuk menemukan nilai terdekat dalam sebuah tabel?