- 1 १. MySQL TIMESTAMP के हो?
- 2 २. TIMESTAMP को आधारभूत प्रयोग
- 3 ३. TIMESTAMP र समय क्षेत्रसँग काम गर्नुहोस्
- 4 ४. Year 2038 समस्या
- 5 ५. TIMESTAMP को व्यावहारिक प्रयोगहरू
- 6 6. TIMESTAMP प्रयोग गर्दा ध्यानमा राख्नुपर्ने कुराहरू
- 7 7. सारांश र सिफारिसहरू
- 8 8. बारम्बार सोधिने प्रश्नहरू (FAQ)
- 8.1 म कहिले TIMESTAMP र कहिले DATETIME प्रयोग गर्नु पर्छ?
- 8.2 के साँच्चै TIMESTAMP 2038 पछि काम नगर्ने हो?
- 8.3 TIMESTAMP स्तम्भमा कसरी NULL मानहरू अनुमति दिने?
- 8.4 समय क्षेत्र परिवर्तन गर्दा मौजुदा TIMESTAMP डेटा प्रभावित हुन्छ?
- 8.5 यदि म CURRENT_TIMESTAMP प्रयोग गर्छु भने के म विशेष समय प्रविष्ट गर्न सक्छु?
१. MySQL TIMESTAMP के हो?
MySQL मा, TIMESTAMP डेटा प्रकारले UTC (Coordinated Universal Time) मा निश्चित समय बिन्दुलाई संग्रह गर्छ र भण्डारण तथा पुनः प्राप्ति गर्दा समय क्षेत्रको स्वचालित समायोजन गर्दछ। यो डेटा प्रकारले जनवरी १, १९७० देखि जनवरी १९, २०३८ सम्मको मिति र समयलाई ह्यान्डल गर्न सक्छ। डेटा भण्डारण गर्दा, TIMESTAMP ले वर्तमान समय क्षेत्र प्रयोग गर्छ, र पुनः प्राप्ति गर्दा प्रणालीको समय क्षेत्रको आधारमा स्वचालित रूपमा पुनः रूपान्तरण हुन्छ।
TIMESTAMP र DATETIME बीचको भिन्नता
DATETIME डेटा प्रकारलाई अक्सर TIMESTAMP सँग तुलना गरिन्छ। TIMESTAMP जस्तै होइन, DATETIME ले प्रविष्ट गरिएजस्तै मिति र समयलाई, समय क्षेत्रको रूपान्तरण बिना नै संग्रह गर्छ। यसको विपरीत, TIMESTAMP लाई भण्डारण गर्दा UTC मा रूपान्तरण गरिन्छ र पुनः प्राप्ति गर्दा प्रणालीको समय क्षेत्रमा पुनः समायोजन गरिन्छ, जसले विभिन्न समय क्षेत्रहरूमा असमानताहरूलाई रोक्न मद्दत गर्छ।
उदाहरणका लागि, TIMESTAMP विशेष गरी प्रणालीहरू माइग्रेट गर्दा वा बहु‑समय क्षेत्रहरूमा डेटाबेसहरू व्यवस्थापन गर्दा उपयोगी हुन्छ। जबकि DATETIME ले धेरै विस्तृत दायरा (वर्ष १००० देखि ९९९९ सम्म) समर्थन गर्छ, जसले Year 2038 समस्या टाल्न उपयुक्त बनाउँछ।
TIMESTAMP प्रयोगको उदाहरण
तपाईंले तल देखाइएका अनुसार TIMESTAMP स्तम्भ सहितको तालिका सिर्जना गर्न सक्नुहुन्छ:
CREATE TABLE events (
id INT AUTO_INCREMENT PRIMARY KEY,
event_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
यस उदाहरणमा, event_time स्तम्भले रेकर्ड इन्सर्ट गर्दा स्वचालित रूपमा वर्तमान समय संग्रह गर्छ र रेकर्ड परिमार्जन हुँदा टाइमस्ट्याम्प अद्यावधिक हुन्छ।
२. 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 स्तम्भमा २०२३ अक्टोबर १, १२:३० PM इन्सर्ट गर्छ।
वर्तमान समय इन्सर्ट गर्नुहोस्
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 ले रेकर्ड पहिलो पटक सिर्जना हुँदा वर्तमान टाइमस्ट्याम्प संग्रह गर्छ र पङ्क्ति परिमार्जन हुँदा अद्यावधिक हुन्छ।
३. TIMESTAMP र समय क्षेत्रसँग काम गर्नुहोस्
TIMESTAMP को मुख्य विशेषताहरू मध्ये एक हो यसको समय क्षेत्र ह्यान्डलिंग। संग्रहित डेटा सधैं UTC मा रूपान्तरण हुन्छ, र पुनः प्राप्ति गर्दा प्रणालीको समय क्षेत्रको आधारमा पुनः रूपान्तरण हुन्छ।
समय क्षेत्र सेटिङ जाँच गर्नुहोस्
MySQL मा, समय क्षेत्रहरू सर्भर वा सेसन अनुसार सेट गर्न सकिन्छ। वर्तमान सेटिङ जाँच गर्न तपाईंले प्रयोग गर्न सक्नुहुन्छ:
SHOW VARIABLES LIKE 'time_zone';
समय क्षेत्र परिवर्तन गर्न, तपाईंले प्रयोग गर्न सक्नुहुन्छ:
SET time_zone = '+09:00';
समय क्षेत्रमा TIMESTAMP vs. DATETIME
DATETIME ले समय क्षेत्रलाई बेवास्ता गर्छ र मानहरू ठीक जस्तै संग्रह गर्छ, जबकि TIMESTAMP ले UTC मा रूपान्तरण गर्छ। यसले TIMESTAMP लाई बहु‑समय क्षेत्रमा सञ्चालन हुने प्रणालीहरूका लागि अधिक उपयुक्त बनाउँछ।
४. Year 2038 समस्या
Year 2038 समस्या TIMESTAMP सँग सम्बन्धित ३२‑बिट प्रणालीहरूको सीमितताबाट उत्पन्न हुन्छ। यो १ जनवरी १९७० देखि सेकेन्ड गन्ती गर्ने कारणले १९ जनवरी २०३८, ०३:१४:०७ UTC पछि ओभरफ्लो हुन्छ।
2038 समस्या कसरी टाल्ने
यसलाई टाल्न, ६४‑बिट प्रणाली प्रयोग गर्नुहोस् वा DATETIME मा स्विच गर्नुहोस्, जसले वर्ष १००० देखि ९९९९ सम्म समर्थन गर्छ। ६४‑बिटमा प्रणाली अपग्रेड गर्दा यो समस्या पूर्ण रूपमा समाप्त हुन्छ।
५. 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 को पुराना संस्करणहरूले 000000-00 00:00:00 लाई अमान्य टाइमस्ट्याम्पको रूपमा अनुमति दिन सक्छन्। तर, यसले डेटा अखण्डता समस्याहरू उत्पन्न गर्न सक्छ र यसलाई सिफारिस गरिंदैन। यसको सट्टा, NULL वा वैध डिफल्ट प्रयोग गर्नुहोस्।
प्रणाली समय क्षेत्रको प्रभाव
TIMESTAMP सधैं UTC मा भण्डारण हुन्छ, त्यसैले विभिन्न समय क्षेत्र भएका सर्भरहरूमा डेटाबेस माइग्रेट गर्दा नतिजामा प्रभाव पर्न सक्छ। सधैं समय क्षेत्रको व्यवस्थापन सुसंगत राख्नुहोस्।
7. सारांश र सिफारिसहरू
TIMESTAMP मिति र समयलाई प्रभावकारी रूपमा व्यवस्थापन गर्नको लागि एक शक्तिशाली MySQL उपकरण हो। यसको समय क्षेत्रसँगको स्वचालित रूपान्तरण र स्वचालित अद्यावधिक सुविधाहरूले यसलाई अत्यन्त सुविधाजनक बनाउँछ। तर, विकासकर्ताहरूले यसको सीमाहरू जस्तै वर्ष 2038 समस्या र NULL ह्यान्डलिङ बुझ्नुपर्छ।
- स्वचालित अद्यावधिक आवश्यक पर्दा
TIMESTAMPप्रयोग गर्नुहोस्। - समय क्षेत्र‑संवेदनशील प्रणालीहरूका लागि
TIMESTAMPचयन गर्नुहोस्। - 2038 पछि लामो अवधिको डेटा वा पूर्ण स्थिरता आवश्यक पर्दा
DATETIMEप्रयोग गर्नुहोस्।
8. बारम्बार सोधिने प्रश्नहरू (FAQ)
म कहिले TIMESTAMP र कहिले DATETIME प्रयोग गर्नु पर्छ?
TIMESTAMP समय क्षेत्रको समायोजन र सृष्टि/अद्यावधिक समयको स्वचालित रेकर्डिङ आवश्यक पर्ने प्रणालीहरूका लागि प्रयोग गर्नुहोस्। DATETIME तब प्रयोग गर्नुहोस् जब तपाईंलाई समय क्षेत्रबाट प्रभावित नहुने स्थिर भण्डारण चाहिन्छ।
के साँच्चै TIMESTAMP 2038 पछि काम नगर्ने हो?
हो, 32‑bit प्रणालीहरूमा TIMESTAMP जनवरी 19, 2038 पछि ओभरफ्लो हुन्छ। समस्याहरू रोक्नको लागि DATETIME प्रयोग गर्नुहोस् वा 64‑bit प्रणालीमा माइग्रेट गर्नुहोस्।
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');


