Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> MySql

MySQL DATETIME और TIMESTAMP डेटा प्रकार में क्या अंतर है?


दोनों डेटा प्रकार डेटा को "YYYY-MM-DD HH:MM:SS" प्रारूप में संग्रहीत करते हैं और इसमें दिनांक और समय शामिल होता है। इन समानताओं के बावजूद उनमें निम्नलिखित अंतर हैं -

  • रेंज - डेटाटाइम डेटा प्रकार 1000-01-01 00:00:00 और 9999-12-31 23:59:59 के बीच की सीमा में समय के साथ एक तिथि का समर्थन करता है। लेकिन टाइमस्टैम्प डेटा प्रकार '1970-01-01 00:00:01' से '2038-01-19 08:44:07' के बीच की सीमा में समय के साथ दिनांक का समर्थन करता है।
  • आकार - भिन्नात्मक सेकंड के डेटा भंडारण के लिए डेटाटाइम को 3 अतिरिक्त बाइट्स के साथ 5 बाइट्स की आवश्यकता होती है। दूसरी ओर, टाइमस्टैम्प डेटाटाइप को फ्रैक्शनल सेकंड के डेटा भंडारण के लिए 4 बाइट्स के साथ-साथ 3 अतिरिक्त बाइट्स की आवश्यकता होती है। लेकिन MySQL 5.6.4 से पहले, डेटटाइम को फ्रैक्शनल सेकंड्स के डेटा स्टोर करने के लिए 3 अतिरिक्त बाइट्स के साथ 8 बाइट्स की आवश्यकता होती है।
  • एक समय क्षेत्र से दूसरे समय क्षेत्र में रूपांतरण - दरअसल MySQL5+ में, टाइमस्टैम्प मान वर्तमान समय से UTC में परिवर्तित हो जाता है और इसके विपरीत, जबकि डेटाटाइम कोई रूपांतरण नहीं करता है।
  • अनुक्रमण - इंडेक्सिंग टाइमस्टैम्प डेटा पर की जा सकती है लेकिन डेटाटाइम डेटा को इंडेक्स नहीं किया जा सकता है।
  • क्वेरी की कैशिंग - टाइमस्टैम्प डेटाटाइप वाले प्रश्नों को कैश किया जा सकता है लेकिन डेटाटाइम डेटाटाइप वाले प्रश्नों को कैश नहीं किया जा सकता है।

ऊपर DATETIME और TIMESTAMP डेटाटाइप के बीच कुछ प्रमुख अंतर थे और निम्न उदाहरण इसे प्रदर्शित करेगा -

उदाहरण

mysql> Create table test_datetime(time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);
Query OK, 0 rows affected (0.44 sec)

mysql> INSERT INTO test_datetime (time) values (CURRENT_TIMESTAMP);
Query OK, 1 row affected (0.04 sec)

mysql> Select * from test_datetime;
+---------------------+
| time                |
+---------------------+
| 2017-11-14 17:29:03 |
+---------------------+
1 row in set (0.00 sec)

mysql> Create table test_timestamp(time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);
Query OK, 0 rows affected (0.64 sec)

mysql> INSERT INTO test_timestamp (time) values (CURRENT_TIMESTAMP);
Query OK, 1 row affected (0.06 sec)

mysql> Select * from test_timestamp;
+---------------------+
| time                |
+---------------------+
| 2017-11-14 17:29:50 |
+---------------------+
1 row in set (0.00 sec)

अब, निम्नलिखित क्वेरी में हमने टाइमज़ोन को UTC-05:00 में बदल दिया है और परिणाम TIMESTAMP डेटाटाइप वाली तालिका के लिए बदल दिया गया है।

mysql> SET @@session.time_zone = '-5:00';
Query OK, 0 rows affected (0.00 sec)

mysql> Select * from test_timestamp;
+---------------------+
| time                |
+---------------------+
| 2017-11-14 06:59:50 |
+---------------------+
1 row in set (0.00 sec)

आउटपुट

mysql> Select * from test_datetime;
+---------------------+
| time                |
+---------------------+
| 2017-11-14 17:29:03 |
+---------------------+
1 row in set (0.00 sec)

  1. MySQL में TINYINT(1) और बूलियन में क्या अंतर है?

    टिन्यिनट (1) और बूलियन के बीच कोई अंतर नहीं है। कीवर्ड बूल या बूलियन आंतरिक रूप से TINYINT(1) में परिवर्तित हो जाता है या हम कह सकते हैं कि बूल या बूलियन TINYINT(1) का पर्याय हैं। आइए पहले एक टेबल बनाएं - टेबल बनाएं DemoTable(ismared Boolean);क्वेरी ओके, 0 पंक्तियाँ प्रभावित (1.77 सेकंड) आइए तालि

  1. MySQL में !=NULL और IS NOT NULL में क्या अंतर है?

    यदि आप किसी मान की तुलना !=NULL से करते हैं तो यह NULL देता है। तो, !=NULL अर्थहीन है। !=NULL और IS NOT NULL के बीच अंतर देखने के लिए, आइए पहले एक टेबल बनाएं। आइए पहले एक टेबल बनाएं - टेबल बनाएं DemoTable1970 (वैल्यू इंट);क्वेरी ओके, 0 पंक्तियाँ प्रभावित (0.00 सेकंड) इंसर्ट कमांड का उपयोग करके टे

  1. पायथन फ़ंक्शंस datetime.now() और datetime.today() में क्या अंतर है?

    फ़ंक्शन datetime.now() tzinfo को कीवर्ड तर्क के रूप में लेता है लेकिन datetime.today() कोई कीवर्ड तर्क नहीं लेता है। दस्तावेज़ों को उद्धृत करना - datetime.now() वर्तमान स्थानीय दिनांक और समय देता है। यदि वैकल्पिक तर्क tz कोई नहीं है या निर्दिष्ट नहीं है, तो यह आज की तरह है (), लेकिन, यदि संभव हो, त