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

वैध तिथि की जाँच करें जो varchar2 . में घोषित की गई है

मैं इसके बजाय डिज़ाइन समस्या को ठीक कर दूंगा समाधान पर समय बर्बाद करने के बजाय एक स्थायी समाधान के रूप में।

सबसे पहले, कभी नहीं स्टोर दिनांक VARCHAR2 . के रूप में . यह सब ओवरहेड इस तथ्य के कारण है कि आपका डिज़ाइन त्रुटिपूर्ण है .

<ब्लॉकक्वॉट>

'20100231'

पृथ्वी पर यह कैसे एक वैध तिथि हो सकती है? फरवरी में किस कैलेंडर में 31 दिन होते हैं?

इन चरणों का पालन करें:

  1. दिनांक डेटा प्रकार के साथ एक नया कॉलम जोड़ें।
  2. TO_DATE . का उपयोग करके पुराने कॉलम के दिनांक मानों के साथ नया कॉलम अपडेट करें ।
  3. नए DATE कॉलम पर आवश्यक DATE अंकगणित करें, या इसे चरण 2 में ही UPDATE स्टेटमेंट में हैंडल करें।
  4. पुराना कॉलम छोड़ें।
  5. नए कॉलम का नाम बदलकर पुराने कॉलम कर दें।

अपडेट करें एक डेमो जोड़ना

सेटअप

SQL> CREATE TABLE t
  2      (ymd varchar2(8));

Table created.

SQL>
SQL> INSERT ALL
  2      INTO t (ymd)
  3           VALUES ('20101112')
  4      --INTO t (ymd)
  5      --     VALUES ('20100231')
  6      INTO t (ymd)
  7           VALUES ('20150101')
  8      INTO t (ymd)
  9           VALUES ('20160101')
 10  SELECT * FROM dual;

3 rows created.

SQL>
SQL> COMMIT;

Commit complete.

SQL>

नया कॉलम जोड़ें:

SQL> ALTER TABLE t ADD (dt DATE);

Table altered.

SQL>

आवश्यक अपडेट करें

SQL> UPDATE t
  2  SET dt =
  3    CASE
  4      WHEN to_date(ymd, 'YYYYMMDD') > SYSDATE
  5      THEN NULL
  6      ELSE to_date(ymd, 'YYYYMMDD')
  7    END;

3 rows updated.

SQL>
SQL> COMMIT;

Commit complete.

SQL>

आइए जांचें:

SQL> SELECT * FROM t;

YMD      DT
-------- ---------
20101112 12-NOV-10
20150101 01-JAN-15
20160101

SQL>

पुराना कॉलम छोड़ें:

SQL> ALTER TABLE t DROP COLUMN ymd;

Table altered.

SQL>

नए कॉलम का नाम बदलकर पुराने कॉलम के नाम पर रखें

SQL> ALTER TABLE t RENAME COLUMN dt TO ymd;

Table altered.

SQL>

आपने अभी-अभी समस्या का समाधान किया है

SQL> SELECT * FROM t;

YMD
---------
12-NOV-10
01-JAN-15


SQL>



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. GIMR . के माध्यम से एक यात्रा

  2. Oracle में एकाधिक प्रतिस्थापन फ़ंक्शन

  3. कोई और एसपीयू

  4. Oracle एपेक्स में फ़ाइलें आयात करना wwv_flow_files का उपयोग करना

  5. ऑरैकल में चुनिंदा स्टेटमेंट में सबक्वायरी कैसे काम करती है?