MySQL-এ TIMESTAMP কলামের ডিফল্ট ভ্যালু হিসেবে বর্তমান তারিখ-সময় সেট করতে CURRENT_TIMESTAMP ব্যবহার করুন। CURRENT_DATE() শুধু তারিখ দেয়, টাইম কম্পোনেন্ট থাকে না।
সঠিক সিনট্যাক্স
CREATE TABLE default_current_date_demo (
student_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
student_name VARCHAR(20),
student_admission_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
উদাহরণ
INSERT INTO default_current_date_demo (student_name) VALUES ('Larry');
INSERT INTO default_current_date_demo (student_name, student_admission_date)
VALUES ('Chris', '2019-01-31');
ফলাফল
+------------+-------------+----------------------+
| student_id | student_name| student_admission_date|
+------------+-------------+----------------------+
| 1 | Larry | 2019-04-02 19:38:19 | -- অটো CURRENT_TIMESTAMP
| 2 | Chris | 2019-01-31 00:00:00 | -- এক্সপ্লিসিট মান
+------------+-------------+----------------------+
CURRENT_TIMESTAMP ভেরিয়েন্টস
| সিনট্যাক্স | বর্ণনা |
| CURRENT_TIMESTAMP | স্ট্যান্ডার্ড, প্যারেনথেসিস ছাড়া |
| CURRENT_TIMESTAMP() | ফাংশন সিনট্যাক্স, সমতুল্য |
| NOW() | সমতুল্য, নন-স্ট্যান্ডার্ড |
ON UPDATE CURRENT_TIMESTAMP (অটো আপডেট)
CREATE TABLE auto_update_demo (
id INT PRIMARY KEY,
data VARCHAR(100),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
created_at — ইনসার্ট সময় সেট হয়, পরে বদলায় না
updated_at — ইনসার্ট ও আপডেট দুবারের সময় বদলায়
TIMESTAMP vs DATETIME
| ফিচার | TIMESTAMP | DATETIME |
| রেঞ্জ | 1970-2038 (32-বিট) | 1000-9999 |
| টাইমজোন কনভার্সন | হ্যাঁ (UTC-এ স্টোর) | না |
| ডিফল্ট CURRENT_TIMESTAMP | হ্যাঁ (৫.৬.৫+) | হ্যাঁ (৫.৬.৫+) |
| স্টোরেজ | ৪ বাইট | ৫ বাইট (৫.৬.৪+) / ৮ বাইট |
দ্রষ্টব্য
DEFAULT CURRENT_DATE() — সিনট্যাক্স এরর (ফাংশন কল ডিফল্টে অনুমোদিত নয়, শুধু CURRENT_TIMESTAMP অপवाद)
- MySQL 8.0.13+ এ
DEFAULT (CURRENT_DATE()) কাজ করে (প্যারেনথেসিসে)