TIMESTAMP कॉलम के लिए डिफ़ॉल्ट मान: CURRENT_TIMESTAMP सही है
MySQL में TIMESTAMP कॉलम का डिफ़ॉल्ट मान CURRENT_TIMESTAMP (या NOW()) होना चाहिए, CURRENT_DATE() नहीं — क्योंकि CURRENT_DATE() केवल दिनांक लौटाता है (समय 00:00:00), जबकि TIMESTAMP में समय भाग भी होता है।
सही टेबल परिभाषा
CREATE TABLE defaultCurrent_DateDemo (
StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentName VARCHAR(20),
StudentAdmissionDate TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
डेटा डालना
INSERT INTO defaultCurrent_DateDemo (StudentName) VALUES ('Larry');
INSERT INTO defaultCurrent_DateDemo (StudentName, StudentAdmissionDate) VALUES ('Chris', '2019-01-31');
परिणाम
+-----------+-------------+----------------------+ | StudentId | StudentName | StudentAdmissionDate | +-----------+-------------+----------------------+ | 1 | Larry | 2019-04-02 19:38:19 | -- CURRENT_TIMESTAMP से ऑटो भरा | 2 | Chris | 2019-01-31 00:00:00 | -- स्पष्ट मान +-----------+-------------+----------------------+
महत्वपूर्ण बिंदु
CURRENT_TIMESTAMP(याNOW()) दिनांक+समय दोनों देता है।CURRENT_DATE()केवल दिनांक देता है → समय 00:00:00 सेट होता है (आमतौर पर अवांछित)।- MySQL 5.6.5+ से एक टेबल में एकाधिक
TIMESTAMPकॉलम परDEFAULT CURRENT_TIMESTAMPऔरON UPDATE CURRENT_TIMESTAMPअनुमत है। DATETIMEकॉलम पर भीDEFAULT CURRENT_TIMESTAMPकाम करता है (5.6.5+)
ON UPDATE के साथ (अपडेट पर ऑटो टाइमस्टैम्प)
CREATE TABLE t (
id INT PRIMARY KEY,
created TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);