Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

แก้ไข Error 1064 Syntax Error ใน MySQL (ตัวอย่าง DATE(100) ผิด)

บทความนี้สาธิตข้อผิดพลาด 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