'04/04/2012 13:35 PM'
तारीख नहीं है - यह एक स्ट्रिंग है।
Oracle एक अंतर्निहित TO_DATE( string_value, format_mask )
करेगा गैर-तारीख वाले अक्षरों पर उन्हें DATE
. में सम्मिलित करते समय NLS_DATE_FORMAT
. के मान का उपयोग करते हुए स्तंभ सत्र पैरामीटर प्रारूप मास्क के रूप में (नोट:यह एक सत्र पैरामीटर है और क्लाइंट से संबंधित है; यह वैश्विक सेटिंग नहीं है ) यदि गैर-दिनांक शाब्दिक इस प्रारूप से मेल खाता है तो यह काम करेगा (और यदि ऐसा नहीं होता है तो यह नहीं होगा) - हालांकि, यदि NLS_DATE_FORMAT
कभी भी बदल दिया जाता है तो यह तुरंत टूट जाएगा (कोई भी डिबग करने के लिए एक बड़ा दर्द हो सकता है क्योंकि जो कोड काम कर रहा था वह नहीं होगा लेकिन किसी ने भी कोड नहीं बदला होगा)।
आप अपने वर्तमान NLS_DATE_FORMAT
. का पता लगा सकते हैं क्वेरी के साथ:
SELECT VALUE
FROM NLS_SESSION_PARAMETERS
WHERE PARAMETER = 'NLS_DATE_FORMAT';
स्पष्ट रूप से TO_DATE()
का उपयोग करना बेहतर है सही प्रारूप मास्क के साथ या एएनएसआई/आईएसओ दिनांक शाब्दिक (यानी DATE '2012-04-04'
का उपयोग करने के लिए) या TIMESTAMP '2012-04-04 13:35'
)।
आप यह कर सकते हैं:
INSERT INTO STORE ( id, opening_time )
VALUES( 1, TO_DATE( '04/04/2012 13:35', 'DD/MM/YYYY HH24:MI' );
(आपको AM/PM
. की आवश्यकता नहीं है चूंकि घंटा घटक पहले से ही 24 घंटे की घड़ी पर है)
या
INSERT INTO STORE ( id, opening_time )
VALUES( 1, TIMESTAMP '2012-04-04 13:35:00' );
(एएनएसआई/आईएसओ टाइमस्टैम्प शाब्दिक का उपयोग करके जो ओरेकल परोक्ष रूप से एक तिथि में परिवर्तित हो जाएगा)