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

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


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

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

उपरोक्त 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)

सारांश: TIMESTAMP टाइमज़ोन-संवेदनशील है (UTC में स्टोर, सेशन टाइमज़ोन में प्रदर्शित), DATETIME टाइमज़ोन-अज्ञेय है। लॉगिंग के लिए TIMESTAMP, ऐतिहासिक/भविष्य की डेट के लिए DATETIME चुनें।

  1. - MySQL में TINYINT(1) और Boolean में क्या अंतर है?

    MySQL में TINYINT(1) और Boolean: कोई अंतर नहीं MySQL में BOOLEAN (या BOOL) वास्तव में TINYINT(1) का एक पर्याय (synonym) है। दोनों आंतरिक रूप से समान हैं। प्रदर्शन: Boolean कॉलम वास्तव में TINYINT(1) बनाता है CREATE TABLE DemoTable ( isMarried BOOLEAN ); DESC DemoTable; आउटपुट: +-----------+--

  1. - MySQL में != NULL और IS NOT NULL का अंतर

    NULL तुलना: != NULL बनाम IS NOT NULL MySQL में किसी मान की तुलना !=NULL से करने पर परिणाम NULL होता है, इसलिए !=NULL अर्थहीन है। सही तरीका IS NOT NULL है। टेबल बनाएं और डेटा डालें: mysql> create table DemoTable1970 ( Value int ); Query OK, 0 rows affected (0.00 sec) mysql> insert into DemoTabl

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

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