- 1 1. MySQL TIMESTAMP क्या है?
- 2 2. TIMESTAMP का बुनियादी उपयोग
- 3 3. TIMESTAMP और समय क्षेत्रों के साथ काम करना
- 4 4. वर्ष 2038 समस्या
- 5 5. TIMESTAMP के व्यावहारिक उपयोग
- 6 6. TIMESTAMP का उपयोग करते समय ध्यान रखने योग्य बातें
- 7 7. सारांश और सिफारिशें
- 8 8. अक्सर पूछे जाने वाले प्रश्न (FAQ)
- 8.1 मुझे TIMESTAMP बनाम DATETIME कब उपयोग करना चाहिए?
- 8.2 क्या यह सच है कि 2038 के बाद TIMESTAMP काम नहीं करेगा?
- 8.3 मैं TIMESTAMP कॉलम में NULL मान कैसे अनुमति दे सकता हूँ?
- 8.4 क्या समय क्षेत्र बदलने से मौजूदा TIMESTAMP डेटा प्रभावित होता है?
- 8.5 यदि मैं CURRENT_TIMESTAMP का उपयोग करता हूँ तो क्या मैं एक विशिष्ट समय डाल सकता हूँ?
1. MySQL TIMESTAMP क्या है?
MySQL में, TIMESTAMP डेटा प्रकार UTC (Coordinated Universal Time) में एक विशिष्ट समय बिंदु को संग्रहीत करता है और भंडारण तथा पुनर्प्राप्ति के दौरान समय क्षेत्र के लिए स्वचालित रूप से समायोजित करता है। यह डेटा प्रकार 1 जनवरी 1970 से 19 जनवरी 2038 तक की तिथियों और समय को संभाल सकता है। जब डेटा संग्रहीत किया जाता है, तो TIMESTAMP वर्तमान समय क्षेत्र का उपयोग करता है, और पुनर्प्राप्ति पर, इसे सिस्टम समय क्षेत्र के आधार पर स्वचालित रूप से वापस परिवर्तित किया जाता है।
TIMESTAMP और DATETIME के बीच अंतर
DATETIME डेटा प्रकार को अक्सर TIMESTAMP से तुलना की जाती है। TIMESTAMP के विपरीत, DATETIME तिथि और समय को ठीक वैसा ही संग्रहीत करता है जैसा दर्ज किया गया है, बिना समय क्षेत्र रूपांतरण के। इसके विपरीत, TIMESTAMP को भंडारण पर UTC में परिवर्तित किया जाता है और पुनर्प्राप्ति पर सिस्टम के समय क्षेत्र में समायोजित किया जाता है, जो समय क्षेत्रों के पार विसंगतियों को रोकने में मदद करता है।
उदाहरण के लिए, TIMESTAMP सिस्टम माइग्रेट करने या कई समय क्षेत्रों में डेटाबेस प्रबंधित करने के लिए विशेष रूप से उपयोगी है। जबकि, DATETIME 1000 से 9999 वर्ष तक का बहुत व्यापक रेंज समर्थन करता है, जो वर्ष 2038 की समस्या से बचने के लिए उपयुक्त बनाता है।
TIMESTAMP का उपयोग करने का उदाहरण
आप नीचे दिखाए अनुसार एक TIMESTAMP कॉलम के साथ तालिका बना सकते हैं:
CREATE TABLE events (
id INT AUTO_INCREMENT PRIMARY KEY,
event_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
इस उदाहरण में, event_time कॉलम रिकॉर्ड डालने पर स्वचालित रूप से वर्तमान समय संग्रहीत करता है और रिकॉर्ड संशोधित होने पर टाइमस्टैंप को अपडेट करता है।
2. TIMESTAMP का बुनियादी उपयोग
MySQL में TIMESTAMP का उपयोग करते समय, मान डालने और पुनर्प्राप्त करने की बुनियादी विधियों को जानना महत्वपूर्ण है। नीचे TIMESTAMP के साथ काम करने के कई उदाहरण दिए गए हैं।
एक विशिष्ट तिथि और समय डालना
TIMESTAMP कॉलम में डेटा डालते समय, आप आमतौर पर YYYY-MM-DD hh:mm:ss प्रारूप में तिथि और समय को स्ट्रिंग के रूप में प्रदान करते हैं।
INSERT INTO events (event_time) VALUES ('2023-10-01 12:30:00');
यह SQL स्टेटमेंट event_time कॉलम में 1 अक्टूबर 2023 को दोपहर 12:30 बजे डालता है।
वर्तमान समय डालना
MySQL के NOW() फंक्शन का उपयोग करके, आप आसानी से वर्तमान तिथि और समय डाल सकते हैं। यह फंक्शन कॉन्फ़िगर किए गए समय क्षेत्र के आधार पर वर्तमान सिस्टम समय लौटाता है।
INSERT INTO events (event_time) VALUES (NOW());
इस मामले में, क्वेरी SQL चलने के क्षण पर सटीक वर्तमान टाइमस्टैंप डालती है।
स्वचालित अपडेट सक्षम करना
एक TIMESTAMP कॉलम में ON UPDATE CURRENT_TIMESTAMP जोड़कर, MySQL रिकॉर्ड संशोधित होने पर कॉलम मान को स्वचालित रूप से अपडेट करता है।
CREATE TABLE orders (
id INT AUTO_INCREMENT PRIMARY KEY,
order_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
यहां, order_time रिकॉर्ड पहली बार बनाए जाने पर वर्तमान टाइमस्टैंप संग्रहीत करता है और पंक्ति संशोधित होने पर अपडेट होता है।
3. TIMESTAMP और समय क्षेत्रों के साथ काम करना
TIMESTAMP की मुख्य विशेषताओं में से एक इसका समय क्षेत्रों को संभालना है। संग्रहीत डेटा हमेशा UTC में परिवर्तित किया जाता है, और पुनर्प्राप्ति पर, इसे सिस्टम समय क्षेत्र के आधार पर वापस परिवर्तित किया जाता है।
समय क्षेत्र सेटिंग्स की जाँच करना
MySQL में, समय क्षेत्रों को सर्वर या सेशन प्रति सेट किया जा सकता है। आप वर्तमान सेटिंग की जाँच करने के लिए उपयोग कर सकते हैं:
SHOW VARIABLES LIKE 'time_zone';
समय क्षेत्र बदलने के लिए, आप उपयोग कर सकते हैं:
SET time_zone = '+09:00';
समय क्षेत्रों में TIMESTAMP बनाम DATETIME
DATETIME समय क्षेत्रों को नजरअंदाज करता है और मानों को ठीक वैसा ही संग्रहीत करता है जैसा दर्ज किया गया है, जबकि TIMESTAMP UTC में परिवर्तित करता है। इससे TIMESTAMP कई समय क्षेत्रों में काम करने वाले सिस्टम के लिए अधिक उपयुक्त बनता है।
4. वर्ष 2038 समस्या
वर्ष 2038 समस्या 32-बिट सिस्टमों के साथ TIMESTAMP की सीमाओं से उत्पन्न होती है। चूंकि यह 1 जनवरी 1970 से सेकंड गिनता है, इसलिए 19 जनवरी 2038 को 03:14:07 UTC के बाद यह ओवरफ्लो हो जाता है।
2038 समस्या से कैसे बचें
इससे बचने के लिए, 64-बिट सिस्टम का उपयोग करें या DATETIME पर स्विच करें, जो 1000 से 9999 वर्षों का समर्थन करता है। 64-बिट पर सिस्टम अपग्रेड इस समस्या को पूरी तरह समाप्त कर देते हैं।
5. TIMESTAMP के व्यावहारिक उपयोग
MySQL का TIMESTAMP न केवल तिथियों और समय को संग्रहीत करने के लिए है बल्कि निर्माण और अपडेट समय को स्वचालित रूप से रिकॉर्ड करने के लिए भी है। कुछ उपयोग के मामले शामिल हैं:
वर्तमान समय को स्वचालित रूप से डालें
CREATE TABLE orders (
id INT AUTO_INCREMENT PRIMARY KEY,
order_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
टाइमस्टैम्प को स्वचालित रूप से अपडेट करें
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50),
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
कई TIMESTAMP कॉलम का उपयोग करना
हालांकि आप एक तालिका में कई TIMESTAMP कॉलम रख सकते हैं, केवल एक ही CURRENT_TIMESTAMP को डिफ़ॉल्ट के रूप में रख सकता है। कई स्वचालित प्रबंधित तिथि फील्ड्स के लिए, आपको DATETIME का उपयोग करने या स्पष्ट रूप से मान सेट करने की आवश्यकता हो सकती है।
CREATE TABLE posts (
id INT AUTO_INCREMENT PRIMARY KEY,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
6. TIMESTAMP का उपयोग करते समय ध्यान रखने योग्य बातें
NULL प्रतिबंध और डिफ़ॉल्ट मान
TIMESTAMP कॉलम डिफ़ॉल्ट रूप से NOT NULL होते हैं। NULL मानों की अनुमति देने के लिए, DEFAULT NULL निर्दिष्ट करें।
CREATE TABLE logs (
id INT AUTO_INCREMENT PRIMARY KEY,
log_time TIMESTAMP DEFAULT NULL
);
0000-00-00 00:00:00 समस्या
MySQL के पुराने संस्करण 0000-00-00 00:00:00 को अमान्य टाइमस्टैम्प के रूप में अनुमति दे सकते हैं। हालांकि, यह अखंडता समस्याओं का कारण बन सकता है और हतोत्साहित किया जाता है। इसके बजाय, NULL या एक वैध डिफ़ॉल्ट का उपयोग करें।
सिस्टम समय क्षेत्र प्रभाव
क्योंकि TIMESTAMP हमेशा UTC संग्रहीत करता है, विभिन्न समय क्षेत्रों वाले सर्वरों के पार डेटाबेस माइग्रेट करना परिणामों को प्रभावित कर सकता है। हमेशा सुसंगत समय क्षेत्र प्रबंधन सुनिश्चित करें।
7. सारांश और सिफारिशें
TIMESTAMP तिथियों और समय को कुशलतापूर्वक प्रबंधित करने के लिए एक शक्तिशाली MySQL उपकरण है। इसके समय क्षेत्रों के साथ स्वचालित रूपांतरण और स्वचालित अपडेट सुविधाएँ इसे अत्यधिक सुविधाजनक बनाती हैं। हालांकि, डेवलपर्स को इसके सीमाओं को समझना चाहिए जैसे वर्ष 2038 समस्या और NULL हैंडलिंग।
- स्वचालित अपडेट की आवश्यकता होने पर
TIMESTAMPका उपयोग करें। - समय क्षेत्र-संवेदनशील सिस्टम के लिए
TIMESTAMPचुनें। - 2038 से परे दीर्घकालिक डेटा के लिए या जब पूर्ण सुसंगतता की आवश्यकता हो तो
DATETIMEका उपयोग करें।
8. अक्सर पूछे जाने वाले प्रश्न (FAQ)
मुझे TIMESTAMP बनाम DATETIME कब उपयोग करना चाहिए?
समय क्षेत्र समायोजन और निर्माण/अपडेट समय के स्वचालित रिकॉर्डिंग की आवश्यकता वाले सिस्टम के लिए TIMESTAMP का उपयोग करें। जब आप समय क्षेत्रों से अप्रभावित सुसंगत संग्रहण चाहते हैं तो DATETIME का उपयोग करें।
क्या यह सच है कि 2038 के बाद TIMESTAMP काम नहीं करेगा?
हाँ, 32-बिट सिस्टम पर, TIMESTAMP 19 जनवरी 2038 के बाद ओवरफ्लो हो जाता है। समस्याओं को रोकने के लिए, DATETIME का उपयोग करें या 64-बिट सिस्टम पर माइग्रेट करें।
मैं TIMESTAMP कॉलम में NULL मान कैसे अनुमति दे सकता हूँ?
कॉलम बनाने के दौरान स्पष्ट रूप से DEFAULT NULL सेट करें:
CREATE TABLE logs (
id INT AUTO_INCREMENT PRIMARY KEY,
log_time TIMESTAMP DEFAULT NULL
);
क्या समय क्षेत्र बदलने से मौजूदा TIMESTAMP डेटा प्रभावित होता है?
संग्रहीत डेटा UTC में रहता है, लेकिन पुनर्प्राप्ति नए समय क्षेत्र सेटिंग के अनुसार समायोजित होती है, जो समय कैसे प्रदर्शित होते हैं उसे बदल देती है। भ्रम से बचने के लिए सिस्टम समय क्षेत्रों को सुसंगत रखें।
यदि मैं CURRENT_TIMESTAMP का उपयोग करता हूँ तो क्या मैं एक विशिष्ट समय डाल सकता हूँ?
हाँ। जबकि CURRENT_TIMESTAMP वर्तमान सिस्टम समय डालता है, आप अभी भी मैन्युअल रूप से विशिष्ट मान डाल सकते हैं:
INSERT INTO events (event_time) VALUES ('2023-10-01 12:30:00');


