MySQL DATETIME व्याख्या: मिति र समय डेटा प्रकारहरूको विस्तृत मार्गदर्शिका

目次

1. MySQL को DATETIME के हो?

MySQL को DATETIME एउटा डेटा प्रकार हो जसले मिति र समय दुवै मानहरूलाई एकै साथ ह्यान्डल गर्न डिजाइन गरिएको छ। डेटाबेसमा मिति र समयको व्यवस्थापन विभिन्न अनुप्रयोगहरूका लागि अत्यावश्यक हुन्छ, जस्तै लगिङ वा आरक्षण प्रणालीहरू। DATETIME प्रकारले मिति र समयलाई एउटै फील्डमा भण्डारण गर्छ र '1000-01-01 00:00:00' देखि '9999-12-31 23:59:59' सम्मको विस्तृत मान दायरा समेट्न सक्छ, साथै फ्र्याक्शनल सेकेन्डहरूलाई पनि समर्थन गर्दछ।

2. MySQL मिति र समय डेटा प्रकारहरूको अवलोकन

2.1 मिति र समय ह्यान्डल गर्ने डेटा प्रकारहरू

MySQL ले मिति र समय ह्यान्डल गर्न निम्न डेटा प्रकारहरू प्रदान गर्दछ:

  • DATE : मिति (वर्ष, महिना, दिन) ह्यान्डल गर्ने डेटा प्रकार। दायरा '1000-01-01' देखि '9999-12-31' सम्म हो।
  • TIME : केवल समय ह्यान्डल गर्ने डेटा प्रकार। दायरा '-838:59:59' देखि '838:59:59' सम्म हो।
  • DATETIME : मिति र समय दुवैलाई संयोजन गर्ने डेटा प्रकार। दायरा '1000-01-01 00:00:00' देखि '9999-12-31 23:59:59' सम्म हो।
  • TIMESTAMP : UNIX टाइमस्ट्याम्पहरू भण्डारण गर्ने डेटा प्रकार। दायरा '1970-01-01 00:00:01' देखि '2038-01-19 03:14:07' सम्म हो।

2.2 DATETIMETIMESTAMP बीचको भिन्नताहरू

DATETIMETIMESTAMP समान देखिए पनि, तिनीहरूका मुख्य भिन्नताहरू यस प्रकार छन्:

  • समय क्षेत्र : DATETIME ले स्थिर मान भण्डारण गर्छ जुन समय क्षेत्रसँग स्वतन्त्र हुन्छ। यसको विपरीत, TIMESTAMP मानहरू भण्डारण गर्दा UTC मा रूपान्तरण हुन्छन् र पुन: प्राप्त गर्दा सर्भरको वर्तमान समय क्षेत्रमा फिर्ता रूपान्तरण हुन्छ। त्यसैले, DATETIME समय क्षेत्रले प्रभावित नहुने मिति र समय (जस्तै इभेन्ट समय) को लागि उपयुक्त हुन्छ, जबकि TIMESTAMP सर्भरको समय क्षेत्रसँग सम्बन्धित डेटा (जस्तै लग रेकर्ड) को लागि अधिक उपयुक्त हुन्छ।
  • भण्डारण ढाँचा : DATETIME ले आफ्नो ठ्याक्कै प्रतिनिधित्वमा भण्डारण गर्छ, जबकि TIMESTAMP लाई UNIX टाइमस्ट्याम्पको रूपमा भण्डारण गरिन्छ। परिणामस्वरूप, TIMESTAMP को समय प्रतिनिधित्व सर्भरको समय क्षेत्र सेटिङ्गद्वारा प्रभावित हुन्छ।

3. MySQL मा DATETIME कसरी प्रयोग गर्ने

3.1 DATETIME स्तम्भ सिर्जना गर्ने

DATETIME प्रकारको स्तम्भ सिर्जना गर्न, तलको SQL सिन्ट्याक्स प्रयोग गर्नुहोस्:

CREATE TABLE sample_table (
    event_time DATETIME
);

यस उदाहरणमा, हामी sample_table नामक तालिकामा event_time नामको DATETIME स्तम्भ सिर्जना गर्दैछौं।

3.2 DATETIME मानहरू इन्सर्ट गर्ने

MySQL को DATETIME मानहरू विभिन्न ढाँचामा इन्सर्ट गर्न सकिन्छ। आधारभूत ढाँचा 'YYYY-MM-DD HH:MM:SS' हो। उदाहरणका लागि:

INSERT INTO sample_table (event_time) VALUES ('2024-09-16 14:30:00');

अन्य अनुमति प्राप्त ढाँचाहरू समावेश छन्:

  • 'YY-MM-DD HH:MM:SS' : दुई अंकको वर्ष निर्दिष्ट गर्ने ढाँचा।
  • 'YYYYMMDDHHMMSS' : विभाजक बिना मानहरू निर्दिष्ट गर्ने ढाँचा।

उदाहरणहरू:

INSERT INTO sample_table (event_time) VALUES ('24-09-16 14:30:00');
INSERT INTO sample_table (event_time) VALUES (20240916143000);

यी ढाँचामा इन्सर्ट गरिएका डेटा सही रूपमा सुरक्षित हुनेछ। यदि वर्ष दुई अंकमा निर्दिष्ट गरिएको छ भने, '70-99' लाई 1970-1999 मा र '00-69' लाई 2000-2069 मा रूपान्तरण गरिन्छ।

3.3 DATETIME मानहरू पुन: प्राप्त गर्ने

DATETIME मानहरू पुन: प्राप्त गर्दा, MySQL ले तिनीहरूलाई डिफल्ट 'YYYY-MM-DD HH:MM:SS' ढाँचामा देखाउँछ। उदाहरणका लागि:

SELECT event_time FROM sample_table;

यो क्वेरीले तपाईंको तालिकामा रहेको DATETIME स्तम्भका मानहरूलाई मानक ढाँचामा प्रदर्शन गर्नेछ।

4. फ्र्याक्शनल सेकेन्डहरू ह्यान्डल गर्ने

4.1 DATETIME प्रिसिजन

MySQL ले DATETIME मानहरूमा फ्र्याक्शनल सेकेन्डहरू समावेश गर्न अनुमति दिन्छ। तपाईंले fsp विकल्प प्रयोग गरेर प्रिसिजन निर्दिष्ट गर्न सक्नुहुन्छ, जसले 0 देखि 6 सम्मको दायरा भित्र फ्र्याक्शनल सेकेन्डहरू भण्डारण गर्न सक्षम बनाउँछ। उदाहरणका लागि, फ्र्याक्शनल सेकेन्डका तीन दशमलव स्थानहरू सहितको स्तम्भ सिर्जना गर्न:

CREATE TABLE precise_times (
    event_time DATETIME(3)
);

यस उदाहरणमा, event_time स्तम्भले अधिकतम तीन अंकको फ्र्याक्शनल सेकेन्ड भण्डारण गर्न सक्छ।

4.2 फ्र्याक्शनल सेकेन्ड सहित मानहरू इन्सर्ट गर्ने

(अगाडि जारी रहनेछ)

INSERT INTO precise_times (event_time) VALUES ('2024-09-16 14:30:00.123');

यो क्वेरीले अंशीय सेकेन्ड सहित मानहरूलाई सही रूपमा भण्डारण गर्दछ। प्रविष्ट गरिएको अंशीय भागलाई काटबिनाको बिना भण्डारण गरिन्छ, र यसको शुद्धता पुनः प्राप्त गर्दा कायम रहन्छ।

5. DATETIME को लागि उत्तम अभ्यासहरू

5.1 DATETIMETIMESTAMP कहिले प्रयोग गर्ने

  • DATETIME प्रयोग गर्नुहोस् जब : समय क्षेत्रबाट स्वतन्त्र स्थिर मिति र समयहरू भण्डारण गर्दा (जस्तै, कार्यक्रम सुरु समय, आरक्षण मितिहरू)।
  • TIMESTAMP प्रयोग गर्नुहोस् जब : सर्भरको समय क्षेत्रसँग सम्बन्धित मिति र समय डेटा भण्डारण गर्दा (जस्तै, डेटा सिर्जना वा अद्यावधिक समय)।

5.2 समय क्षेत्र व्यवस्थापन

DATETIME मा समय क्षेत्रको अवधारणा नभएको कारण, समय क्षेत्र व्यवस्थापन एप्लिकेशनले नै गर्नुपर्छ। अर्कोतर्फ, TIMESTAMP ले मानहरू भण्डारण र पुनः प्राप्त गर्दा सर्भरको समय क्षेत्रलाई स्वचालित रूपमा ध्यानमा राख्छ, जसले विश्वभर विभिन्न समय क्षेत्रहरूमा सञ्चालनहरूका लागि उपयुक्त बनाउँछ।

6. सामान्य गल्तीहरू र तिनीहरूलाई कसरी टार्ने

6.1 शून्य मितिहरू र अमान्य मानहरू

MySQL मा, अमान्य DATETIME मान प्रविष्ट गर्ने प्रयास गर्दा '0000-00-00 00:00:00' को “शून्य मिति” भण्डारण हुन्छ। यो सामान्यतया वैध मिति नभएको कारण, अमान्य मानहरू प्रविष्ट नहोस भनेर डेटा इनपुटको प्रमाणीकरण गर्नु अत्यावश्यक छ। इनपुट डेटा उपयुक्त दायरा र ढाँचामा मिल्दो छ कि छैन जाँच गर्ने प्रमाणीकरण लागू गर्दा शून्य मितिहरूको भण्डारण रोक्न सकिन्छ।

6.2 शुद्धताको दुरुपयोग

अंशीय सेकेन्ड शुद्धता निर्दिष्ट गर्दा, गलत शुद्धता प्रयोग गर्दा अनपेक्षित परिणामहरू आउन सक्छ। आवश्यक परे मात्र अंशीय सेकेन्ड शुद्धता निर्दिष्ट गर्नुहोस्, र fsp मानलाई सावधानीपूर्वक सेट गर्नुहोस्। उदाहरणका लागि, यदि तपाईंको एप्लिकेशनलाई सब-सेकेन्ड शुद्धता आवश्यक छैन भने, तपाईंको DATETIME स्तम्भको लागि अंशीय सेकेन्ड सेट गर्ने आवश्यकता छैन।

7. निष्कर्ष

यो लेखले MySQL को DATETIME डेटा प्रकारको विस्तृत व्याख्या प्रदान गरेको छ। DATETIME मिति र समय दुबैलाई एकै साथ ह्यान्डल गर्न अत्यन्त उपयोगी डेटा प्रकार हो, जसले समय क्षेत्रबाट प्रभावित नहुने मानहरू भण्डारण गर्न उपयुक्त हुन्छ। DATETIMETIMESTAMP बीचको भिन्नता, समय क्षेत्रको ह्यान्डलिंग, र अंशीय सेकेन्डको प्रयोग बुझेर, तपाईं आफ्नो डेटाबेसमा मिति र समय डेटा प्रभावकारी रूपमा व्यवस्थापन गर्न सक्नुहुन्छ। साथै, सामान्य गल्तीहरू र तिनीहरूलाई टार्ने रणनीतिहरूको ज्ञानले डेटा स्थिरता र विश्वसनीयता कायम राख्न मद्दत पुर्याउँछ।

8. अक्सर सोधिने प्रश्नहरू (FAQ)

प्रश्न १: DATETIMETIMESTAMP बीच मुख्य भिन्नताहरू के हुन्?

DATETIME समय क्षेत्रबाट स्वतन्त्र स्थिर मिति र समय भण्डारण गर्दछ। उदाहरणका लागि, यो आरक्षण मितिहरू वा कार्यक्रम समयहरू भण्डारण गर्न उपयुक्त हुन्छ, जुन सबै समय क्षेत्रहरूमा समान रहन्छ। यसको विपरीत, TIMESTAMP UTC मा आधारित रूपमा भण्डारण हुन्छ र पुनः प्राप्त गर्दा सर्भरको समय क्षेत्रमा रूपान्तरण हुन्छ। यो सर्भरको समय क्षेत्रमा निर्भर हुने समय-संवेदनशील डेटा जस्तै लग रेकर्डहरूका लागि उपयुक्त हुन्छ।

प्रश्न २: DATETIME सँग अंशीय सेकेन्ड कसरी भण्डारण गर्ने?

DATETIME स्तम्भ सिर्जना गर्दा, fsp मान निर्दिष्ट गरेर अंशीय सेकेन्डको शुद्धता सेट गर्न सकिन्छ। उदाहरणका लागि, DATETIME(3) निर्दिष्ट गर्दा तीन दशमलव स्थानसम्मको अंशीय सेकेन्ड भण्डारण गर्न सकिन्छ। प्रविष्ट गर्दा, अंशीय सेकेन्ड समावेश भएको मान प्रयोग गर्नुहोस्, र यो उपयुक्त ढाँचामा भण्डारण हुनेछ।

प्रश्न ३: म DATETIME वा TIMESTAMP मध्ये कुन प्रयोग गर्ने?

यो तपाईंको प्रयोग केसमा निर्भर गर्दछ। यदि तपाईं स्थिर मिति र समय भण्डारण गर्न चाहनुहुन्छ भने DATETIME प्रयोग गर्नुहोस्। अर्कोतर्फ, सर्भरको समय क्षेत्रले प्रभावित हुने मिति र समय डेटा जस्तै डेटा सिर्जना वा अद्यावधिक समयका लागि TIMESTAMP प्रयोग गर्नुहोस्। स्वचालित समय क्षेत्र रूपान्तरण आवश्यक पर्दा, विशेष गरी विभिन्न समय क्षेत्रहरूमा सञ्चालनहरूका लागि, TIMESTAMP उपयुक्त हुन्छ।