কম্পিউটার

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' এর মধ্যে সময়ের সাথে একটি তারিখ সমর্থন করে৷
  • আকার − ভগ্নাংশের সেকেন্ডের ডেটা সংরক্ষণের জন্য ডেটটাইমের জন্য 5 বাইট এবং 3 অতিরিক্ত বাইট প্রয়োজন। অন্যদিকে, টাইমস্ট্যাম্প ডেটাটাইপের ভগ্নাংশ সেকেন্ডের ডেটা সংরক্ষণের জন্য 4 বাইট সহ 3 অতিরিক্ত বাইটের প্রয়োজন। কিন্তু MySQL 5.6.4 এর আগে, ভগ্নাংশের সেকেন্ডের ডেটা সংরক্ষণের জন্য DateTime-এর জন্য 8 বাইট এবং 3 অতিরিক্ত বাইটের প্রয়োজন হয়৷
  • এক টাইমজোন থেকে অন্য টাইমজোনে রূপান্তর − প্রকৃতপক্ষে 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 এ 'AND' এবং '&&' এর মধ্যে পার্থক্য?

  2. মাইএসকিউএল-এ TINYINT(1) এবং বুলিয়ানের মধ্যে পার্থক্য কী?

  3. MySQL এ!=NULL এবং IS NOT NULL এর মধ্যে পার্থক্য কি?

  4. পাইথন ফাংশন datetime.now() এবং datetime.today() এর মধ্যে পার্থক্য কি?