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

Oracle दिनांक स्तंभ सफाई

यह एक कारण है कि किसी वर्ण फ़ील्ड में दिनांक जानकारी संग्रहीत करना इतना बुरा विचार है।

सबसे आसान विकल्प एक ऐसा फ़ंक्शन बनाना है जो आपके पास जो भी प्राथमिकता क्रम है (यानी 010203 जनवरी 2, 2003 या 3 फरवरी, 2001 या कुछ और) प्रारूपों का उपयोग करके स्ट्रिंग को दिनांक में बदलने का प्रयास करता है और अपवादों को पकड़ता है। कुछ इस तरह

CREATE OR REPLACE FUNCTION my_to_date( p_str IN VARCHAR2 )
  RETURN DATE
IS
  l_date DATE;
BEGIN
  l_date := to_date( p_str, 'YYYYMMDD' );
  RETURN l_date;
EXCEPTION
  WHEN others THEN
    BEGIN
      l_date := to_date( p_str, 'MM/DD/YYYY' );
      RETURN l_date;
    EXCEPTION 
      WHEN others
      THEN
        RETURN null;
    END;
END;

जो कुछ इस तरह काम करता है

SQL> CREATE OR REPLACE FUNCTION my_to_date( p_str IN VARCHAR2 )
  2    RETURN DATE
  3  IS
  4    l_date DATE;
  5  BEGIN
  6    l_date := to_date( p_str, 'YYYYMMDD' );
  7    RETURN l_date;
  8  EXCEPTION
  9    WHEN others THEN
 10      BEGIN
 11        l_date := to_date( p_str, 'MM/DD/YYYY' );
 12        RETURN l_date;
 13      EXCEPTION
 14        WHEN others
 15        THEN
 16          RETURN null;
 17      END;
 18  END;
 19  /

Function created.

SQL> select my_to_date( '19000101' ) from dual;

MY_TO_DAT
---------
01-JAN-00

SQL> ed
Wrote file afiedt.buf

  1* select my_to_date( '01/02/2005' ) from dual
SQL> /

MY_TO_DAT
---------
02-JAN-05

बेशक, आपको अपने कोड में मान्य दिनांक स्वरूपों के पूरे सेट को कोड करना होगा, मैं आपकी सूची में पहले दो को संभाल रहा हूं।



  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. स्कीमा नाम को छोड़कर अन्य स्कीमा में एक तालिका का संदर्भ लें

  3. Oracle स्कीमा उपयोगकर्ता प्रक्रिया में तालिका नहीं बना सकता

  4. जन्म तिथि पर प्रतिबंध की जाँच करें?

  5. स्पूल कमांड:फाइल करने के लिए SQL स्टेटमेंट आउटपुट न करें