บทความนี้สาธิตข้อผิดพลาด Syntax Error 1064 ที่พบบ่อย: การระบุความยาวให้ชนิดข้อมูล DATE ซึ่งไม่รองรับความยาว (ไม่ใช่ VARCHAR/CHAR)
โค้ดที่ผิด (Error 1064)
mysql> CREATE TABLE DemoTable689(
UserId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
UserName VARCHAR(100),
UserLoginDate DATE(100) NOT NULL -- ❌ ผิด: DATE ไม่รับความยาว
);
ERROR 1064 (42000): You have an error in your SQL syntax;
check the manual ... near '(100) NOT NULL )' at line 5
โค้ดที่ถูกต้อง
mysql> CREATE TABLE DemoTable689(
UserId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
UserName VARCHAR(100),
UserLoginDate DATE NOT NULL -- ✅ ถูกต้อง: DATE อยู่คนเดียว
);
Query OK, 0 rows affected (0.68 sec)
เพิ่มข้อมูลทดสอบ
mysql> INSERT INTO DemoTable689(UserName, UserLoginDate) VALUES('John', DATE(NOW()));
mysql> INSERT INTO DemoTable689(UserName, UserLoginDate) VALUES('Chris', '2018-01-21');
mysql> INSERT INTO DemoTable689(UserName, UserLoginDate) VALUES('Robert', CURDATE());
ผลลัพธ์
+--------+----------+---------------+
| UserId | UserName | UserLoginDate |
+--------+----------+---------------+
| 1 | John | 2019-07-21 |
| 2 | Chris | 2018-01-21 |
| 3 | Robert | 2019-07-21 |
+--------+----------+---------------+
ชนิดข้อมูลที่รับความยาว (Length/Precision): CHAR, VARCHAR, BINARY, VARBINARY, DECIMAL, FLOAT, DOUBLE, BIT, ENUM, SET
ชนิดข้อมูลที่ไม่รับความยาว: DATE, TIME, DATETIME, TIMESTAMP, YEAR, INT, BIGINT, TEXT, BLOB, JSON