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 DATETIME और TIMESTAMP के बीच अंतर
जबकि DATETIME और TIMESTAMP समान दिखते हैं, उनके बीच निम्नलिखित मुख्य अंतर हैं:
- टाइम ज़ोन :
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 फ्रैक्शनल सेकंड्स के साथ मान डालना
फ्रैक्शनल सेकंड्स सहित DATETIME मान डालने के लिए, निम्नलिखित का उपयोग करें:
INSERT INTO precise_times (event_time) VALUES ('2024-09-16 14:30:00.123');
यह क्वेरी अंशीय सेकंड सहित मानों को सटीक रूप से संग्रहीत करती है। डाली गई अंशीय भाग को बिना कटे संग्रहीत किया जाता है, और पुनः प्राप्ति पर इसकी सटीकता बनी रहती है।

5. DATETIME के लिए सर्वोत्तम प्रथाएँ
5.1 DATETIME बनाम TIMESTAMP कब उपयोग करें
- जब
DATETIMEउपयोग करें : ऐसे निश्चित तिथियों और समयों को संग्रहीत करने के लिए जो समय क्षेत्रों से स्वतंत्र हों (उदाहरण के लिए, इवेंट की शुरुआत का समय, आरक्षण तिथियां)। - जब
TIMESTAMPउपयोग करें : ऐसी तिथि और समय डेटा को संग्रहीत करने के लिए जो सर्वर के समय क्षेत्र से संबंधित हो (उदाहरण के लिए, डेटा निर्माण या अद्यतन समय)।
5.2 समय क्षेत्रों का प्रबंधन
DATETIME में समय क्षेत्र की अवधारणा नहीं होती, इसलिए समय क्षेत्र का प्रबंधन एप्लिकेशन द्वारा किया जाना चाहिए। दूसरी ओर, TIMESTAMP मानों को संग्रहीत और पुनः प्राप्त करते समय स्वचालित रूप से सर्वर के समय क्षेत्र को ध्यान में रखता है, जिससे यह विश्व भर में विभिन्न समय क्षेत्रों में संचालन के लिए उपयुक्त बनता है।
6. सामान्य गलतियाँ और उन्हें कैसे टालें
6.1 शून्य तिथियां और अमान्य मान
MySQL में, यदि आप एक अमान्य DATETIME मान डालने का प्रयास करते हैं तो '0000-00-00 00:00:00' जैसी “शून्य तिथि” संग्रहीत हो जाएगी। चूंकि यह आमतौर पर वैध तिथि नहीं होती, इसलिए डेटा इनपुट को मान्य करना अत्यंत आवश्यक है ताकि अमान्य मानों का सम्मिलन रोका जा सके। उचित रेंज और स्वरूप के अनुसार इनपुट डेटा को सत्यापित करने से शून्य तिथियों के संग्रहण को रोका जा सकता है।
6.2 सटीकता (Precision) का दुरुपयोग
अंशीय सेकंड की सटीकता निर्दिष्ट करते समय, गलत सटीकता का उपयोग अनपेक्षित परिणाम दे सकता है। केवल आवश्यक होने पर ही अंशीय सेकंड की सटीकता निर्दिष्ट करें, और fsp मान को सावधानीपूर्वक सेट करें। उदाहरण के लिए, यदि आपके एप्लिकेशन को उप-सेकंड सटीकता की आवश्यकता नहीं है, तो अपने DATETIME कॉलम के लिए अंशीय सेकंड सेट करने की जरूरत नहीं है।
7. निष्कर्ष
यह लेख MySQL के DATETIME डेटा प्रकार की विस्तृत व्याख्या प्रदान करता है। DATETIME एक अत्यंत उपयोगी डेटा प्रकार है जो एक साथ तिथि और समय को संभालता है, और समय क्षेत्रों से अप्रभावित मानों को संग्रहीत करने के लिए उपयुक्त है। DATETIME और TIMESTAMP के बीच अंतर, समय क्षेत्र का प्रबंधन, और अंशीय सेकंड के उपयोग को समझकर आप अपने डेटाबेस में तिथि और समय डेटा को प्रभावी रूप से प्रबंधित कर सकते हैं। इसके अलावा, सामान्य गलतियों और उनके टालने के तरीकों का ज्ञान डेटा की स्थिरता और विश्वसनीयता बनाए रखने में मदद करेगा।
8. अक्सर पूछे जाने वाले प्रश्न (FAQ)
प्रश्न 1: DATETIME और TIMESTAMP के मुख्य अंतर क्या हैं?
DATETIME एक निश्चित तिथि और समय को समय क्षेत्रों से स्वतंत्र रूप से संग्रहीत करता है। उदाहरण के लिए, यह आरक्षण तिथियों या इवेंट समय को संग्रहीत करने के लिए उपयुक्त है जो सभी समय क्षेत्रों में समान रहता है। इसके विपरीत, TIMESTAMP UTC के आधार पर संग्रहीत होता है और पुनः प्राप्ति पर इसे सर्वर के समय क्षेत्र में परिवर्तित किया जाता है। यह लॉग रिकॉर्ड जैसी समय-संवेदनशील डेटा के लिए उपयुक्त है जो सर्वर के समय क्षेत्र पर निर्भर करता है।
प्रश्न 2: मैं DATETIME के साथ अंशीय सेकंड कैसे संग्रहीत कर सकता हूँ?
DATETIME कॉलम बनाते समय, आप fsp मान निर्दिष्ट करके अंशीय सेकंड की सटीकता सेट कर सकते हैं। उदाहरण के लिए, DATETIME(3) निर्दिष्ट करने से आप तीन दशमलव स्थान तक अंशीय सेकंड संग्रहीत कर सकते हैं। सम्मिलन करते समय, अंशीय सेकंड सहित मान का उपयोग करें, और यह उपयुक्त स्वरूप में संग्रहीत हो जाएगा।
प्रश्न 3: मुझे DATETIME या TIMESTAMP में से कौन सा उपयोग करना चाहिए?
यह आपके उपयोग केस पर निर्भर करता है। यदि आप एक निश्चित तिथि और समय संग्रहीत करना चाहते हैं तो DATETIME उपयोग करें। दूसरी ओर, यदि आप ऐसी तिथि और समय डेटा संग्रहीत करना चाहते हैं जो सर्वर के समय क्षेत्र से प्रभावित हो, जैसे डेटा निर्माण या अद्यतन समय, तो TIMESTAMP उपयोग करें। जब स्वचालित समय क्षेत्र रूपांतरण आवश्यक हो, विशेषकर विभिन्न समय क्षेत्रों में संचालन के लिए, तो TIMESTAMP उपयुक्त है।


