কম্পিউটার টিউটোরিয়াল

MySQL DATETIME এবং TIMESTAMP ডেটা টাইপের পার্থক্য

দুই টাইপই YYYY-MM-DD HH:MM:SS ফরম্যাটে ডেটা স্টোর করে এবং ডেটা+টাইম উভয়ই ধারণ করে। তবুও গুরুত্বপূর্ণ পার্থক্য রয়েছে:

  • রেঞ্জ (Range):
    • 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
  • স্টোরেজ সাইজ (MySQL 5.6.4+):
    • DATETIME: ৫ বাইট + ৩ বাইট (ফ্র্যাকশনাল সেকেন্ডের জন্য)
    • TIMESTAMP: ৪ বাইট + ৩ বাইট (ফ্র্যাকশনাল সেকেন্ডের জন্য)
  • টাইমজোন কনভারশন: TIMESTAMP মান বর্তমান টাইমজোন থেকে UTC-তে কনভার্ট হয় (সেভ করার সময়) এবং UTC থেকে বর্তমান টাইমজোনে (রিড করার সময়)। DATETIME-এ কোনো কনভারশন হয় না।
  • ইনডেক্সিং: TIMESTAMP-এ ইনডেক্স করা যায়, DATETIME-এ সরাসরি ইনডেক্স করা যায় না (পুরানো ভার্সনে)।
  • ক্যাশিং: TIMESTAMP دار কোয়েরি ক্যাশ হয়, DATETIME দার ক্যাশ হয় না।

উদাহরণ

mysql> CREATE TABLE test_datetime(time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);
mysql> INSERT INTO test_datetime (time) VALUES (CURRENT_TIMESTAMP);
mysql> SELECT * FROM test_datetime;
+---------------------+
| time                |
+---------------------+
| 2017-11-14 17:29:03 |
+---------------------+

mysql> CREATE TABLE test_timestamp(time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);
mysql> INSERT INTO test_timestamp (time) VALUES (CURRENT_TIMESTAMP);
mysql> SELECT * FROM test_timestamp;
+---------------------+
| time                |
+---------------------+
| 2017-11-14 17:29:50 |
+---------------------+

টাইমজোন পরিবর্তন (SET @@session.time_zone = '-5:00') করলে:

  • test_timestamp-এ সময় পরিবর্তিত হয় (UTC কনভারশন)।
  • test_datetime-এ সময় অপরিবর্তিত থাকে।
  1. MySQL-এ AND এবং && অপারেটরের পার্থক্য কি? (স্ট্যান্ডার্ড vs মালিকানা সিনট্যাক্স)

  2. MySQL-এ TINYINT(1) এবং Boolean-এর পার্থক্য

  3. MySQL-এ != NULL এবং IS NOT NULL-এর পার্থক্য

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