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

Oracle SQL:वर्ष के सप्ताह को तिथि से निकालने से यादृच्छिक परिणाम मिलते हैं

[TL;DR] बस उपयोग करें:TO_CHAR( tbl.col, 'IW' )

आपके पास कई समस्याएं हैं:

  1. आप कॉल कर रहे हैं TO_DATE( string, format_model ) एक DATE . के साथ (VARCHAR2 नहीं) ) जो Oracle को DATE . का एक अंतर्निहित रूपांतरण करने का कारण बनता है एक VARCHAR2 . के लिए NLS_DATE_FORMAT का उपयोग करके सत्र पैरामीटर प्रारूप मॉडल के रूप में बस इतना है कि आप इसे वापस DATE में बदल सकते हैं . तो, आप प्रभावी ढंग से कर रहे हैं:

    TO_CHAR(
      TO_DATE(
        TO_CHAR(
          tbl.col,
          ( SELECT VALUE FROM NLS_SESSION_PARAMETERS WHERE PARAMETER = 'NLS_DATE_FORMAT' )
        ),
        'YYYY/MM/DD'
      ),
      'IW'
    )
    

    ऐसा न करें , बस उपयोग करें:

    TO_CHAR( tbl.col, 'IW' )
    

    यदि आप ऐसा करते हैं तो निम्नलिखित मुद्दे अप्रासंगिक हैं।

  2. जैसा कि RealCheeseLord बताता है, आपके प्रारूप मॉडल में वर्ष और दिन की स्थिति उलट जाती है; और
  3. आप YYYY . का उपयोग कर रहे हैं वर्ष प्रारूप मॉडल के लिए इसलिए सभी वर्ष पहली शताब्दी ईस्वी में होने जा रहे हैं।

    उदाहरण :

    SELECT TO_CHAR( TO_DATE( '19-Jun-17', 'YYYY/MM/DD' ), 'YYYY-MM-DD' ) AS dt
    FROM   DUAL
    

    आउटपुट :

    DT
    ----------
    0019-06-17
    

    यदि आप निहित स्ट्रिंग रूपांतरण को ठीक नहीं करने जा रहे हैं तो आप शायद या तो चाहेंगे:

    TO_CHAR(TO_DATE(tbl.col,'DD-MON-YY'),'IW') AS week
    

    या (इस पर निर्भर करता है कि आप वर्ष 99 को 1999 या 2099 चाहते हैं):

    TO_CHAR(TO_DATE(tbl.col,'DD-MON-RR'),'IW') AS week
    
  4. आप MM . का उपयोग कर रहे हैं MON . के लिए प्रारूप मॉडल स्वरूपित डेटा - यह आवश्यक रूप से कोई समस्या नहीं है क्योंकि MM MON . से भी मेल खाता है और MONTH लेकिन आपको शायद सही मॉडल का उपयोग करना चाहिए।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle में एक तिथि से सदी कैसे प्राप्त करें

  2. <SQL>तालिका के VARCHAR2 का आकार कैसे बदलें

  3. Oracle SQL डेवलपर का उपयोग करके CSV को तालिका कैसे निर्यात करें?

  4. Phpinfo में कोई oci8 मॉड्यूल नहीं ()

  5. टॉड 9.5 तालिका में एक्सेल डेटा कैसे आयात करें