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

ชนิดข้อมูล TIMESTAMP ใน MySQL และการตั้งค่า DEFAULT

บทความนี้อธิบายชนิดข้อมูล TIMESTAMP ใน MySQL และวิธีเปลี่ยนคอลัมน์ DATETIME ให้เป็น TIMESTAMP พร้อมตั้งค่า DEFAULT CURRENT_TIMESTAMP

สร้างตารางและแก้ไขคอลัมน์

mysql> CREATE TABLE DemoTable662(
    UserId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    UserName VARCHAR(100),
    UserPostDate DATETIME
);
Query OK, 0 rows affected (0.50 sec)

mysql> ALTER TABLE DemoTable662 
MODIFY COLUMN UserPostDate TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;
Query OK, 0 rows affected (1.81 sec)

โครงสร้างตารางหลังแก้ไข

+--------------+--------------+------+-----+-------------------+----------------+
| Field        | Type         | Null | Key | Default           | Extra          |
+--------------+--------------+------+-----+-------------------+----------------+
| UserId       | int(11)      | NO   | PRI | NULL              | auto_increment |
| UserName     | varchar(100) | YES  |     | NULL              |                |
| UserPostDate | timestamp    | NO   |     | CURRENT_TIMESTAMP |                |
+--------------+--------------+------+-----+-------------------+----------------+

เพิ่มข้อมูลทดสอบ

mysql> INSERT INTO DemoTable662(UserName) VALUES('Chris');
mysql> INSERT INTO DemoTable662(UserName) VALUES('Robert');
mysql> INSERT INTO DemoTable662(UserName, UserPostDate) VALUES('Robert', '2018-01-11');

ผลลัพธ์

+--------+----------+---------------------+
| UserId | UserName | UserPostDate        |
+--------+----------+---------------------+
| 1      | Chris    | 2019-07-20 13:06:13 |
| 2      | Robert   | 2019-07-20 13:06:18 |
| 3      | Robert   | 2018-01-11 00:00:00 |
+--------+----------+---------------------+

จุดสำคัญ:

  • TIMESTAMP - เก็บวันที่+เวลา ช่วง 1970-01-01 ถึง 2038-01-19
  • DEFAULT CURRENT_TIMESTAMP - ตั้งค่าอัตโนมัติเมื่อ INSERT โดยไม่ระบุค่า
  • แถวที่ 3 ระบุ UserPostDate เอง จึงใช้ค่าที่กำหนดแทนค่าเริ่มต้น
  • ต่างจาก DATETIME ที่ช่วงกว้างกว่า (1000-9999) แต่ไม่มี Auto-update feature