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

दिनांक/समय सीमा को दिन के अनुसार विभाजित करने के लिए Oracle SQL की आवश्यकता है

एसक्यूएल में ऐसा करना संभव है। दो तरकीबें हैं। पहला नंबरों की एक श्रृंखला उत्पन्न कर रहा है, जिसे आप connect . का उपयोग करके सीटीई के साथ कर सकते हैं ।

दूसरा शुरुआत और अंत के लिए सही समय रखते हुए, तारीखों का विस्तार करने के लिए सही तर्क को एक साथ रख रहा है।

निम्नलिखित एक उदाहरण है:

with n as (
      select level n
      from dual connect by level <= 20
     ),
     t as (
      select 1 as id, to_date('01/01/2000 4', 'mm/dd/yyyy hh') as StartDate, to_date('01/03/2000 6', 'mm/dd/yyyy hh') as EndDate from dual union all
      select 2 as id, to_date('01/04/2000 8', 'mm/dd/yyyy hh') as StartDate, to_date('01/04/2000 12', 'mm/dd/yyyy hh') as EndDate from dual union all
      select 3 as id, to_date('01/05/2000', 'mm/dd/yyyy') as StartDate, to_date('01/06/2000', 'mm/dd/yyyy') as EndDate from dual
     )
select t.id,
       (case when n = 1 then StartDate
             else trunc(StartDate + n - 1)
        end) as StartDate,
       (case when trunc(StartDate + n - 1) = trunc(enddate)
             then enddate
             else trunc(StartDate + n)
        end)
from t join
     n
     on StartDate + n - 1 <= EndDate
order by id, StartDate

यहाँ यह SQLFiddle पर है।



  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. कोई रिकॉर्ड न होने पर SUM का चयन करें एक पंक्ति लौटाता है

  3. Oracle की ALL_TAB_COLUMNS तालिका में BIN$... तालिकाएँ क्या हैं?

  4. Oracle ORA-12154:TNS:सेवा नाम त्रुटि का समाधान नहीं कर सका?

  5. जब ऑरैकल डीबी में फारसी चरित्र डालें तो मुझे प्रश्न चिह्न दिखाई देता है