Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

क्रॉन अभिव्यक्ति को दिनांक/समय प्रारूप में कनवर्ट करने के लिए SQL क्वेरी

आप regexp_substr का उपयोग कर सकते हैं शेड्यूल टपल से अलग-अलग तत्वों को निकालने के लिए कार्य करता है। उदाहरण के लिए regexp_substr(schedule, '[0-9*]+', 1,1) मिनट तत्व निकालेगा, जबकि regexp_substr(sched, '[0-9*]+', 1, 2) घंटा तत्व निकालेगा। चौथा पैरामीटर वांछित तत्व का चयन करता है। फिर आप या तो EXTRACT . का उपयोग कर सकते हैं या TO_CHAR तुलना के लिए अपने टाइमस्टैम्प के विभिन्न हिस्सों को प्राप्त करने के लिए कार्य करें।

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;

आवश्यक परिणाम प्राप्त करने के लिए तार्किक अभिव्यक्ति को केस स्टेटमेंट से आंशिक या संपूर्ण रूप से स्थानांतरित करें।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. शर्तों की जांच कैसे करें और टेक्स्ट फ़ाइल ऑरैकल फॉर्म में टेक्स्ट कैसे लिखें

  2. आईएन ऑपरेटर को गतिशील रूप से मूल्य कैसे पास करें?

  3. ऑरेकल ने कब शीर्ष का समर्थन करना शुरू किया:शीर्ष चुनें? p2_.PRODUCT_ID PRODUCT से?

  4. लेन-देन तालिका से आवधिक स्नैपशॉट उत्पन्न करने के लिए SQL

  5. Oracle ऑटो वर्तमान तिथि जोड़ें