উভয় ডেটার ধরনই "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)