MySQL 如何在MySQL表格的一个列中自动插入当前日期?
在日常的数据库应用中,经常需要在某个列中自动插入当前日期,比如在记录某个操作时间的列中自动记录当前时间,这时我们可以使用MySQL中的函数来实现这一功能。
阅读更多:MySQL 教程
时间函数
MySQL提供了多个时间函数,我们在这里使用其中的NOW()
函数来获取当前日期和时间。NOW()
函数返回一个具有DATETIME
数据类型的值,这个值包含了当前日期和时间。
列类型
在将日期插入到MySQL表格中时,我们需要注意目标列的数据类型,如果目标列的数据类型不是DATETIME
类型,我们就不能直接将NOW()
函数返回的时间插入到目标列中,否则会提示数据类型不匹配的错误。
下面是常用的日期与时间类型(Type):
Type | Description |
---|---|
DATE | 日期类型,值的表示范围为 ‘1000-01-01’ 到 ‘9999-12-31’ |
TIME | 时间类型,值的表示范围为 ‘-838:59:59’ 到 ‘838:59:59’ |
DATETIME | 日期和时间类型,值的表示范围为 ‘1000-01-01 00:00:00’ 到 ‘9999-12-31 23:59:59’ |
TIMESTAMP | 时间戳类型,值的表示范围为 1970年1月1日以来的秒数,使用 4 字节存储,范围 ‘-2147483648’ 到 ‘2147483647’ |
YEAR | 年份类型,值的表示范围为 ‘1901’ 到 ‘2155’,或 ‘0000’ |
如果想要使用NOW()
函数自动插入当前日期和时间,目标列的数据类型必须是DATE
,DATETIME
或TIMESTAMP
类型。下面是一个students
表格的定义:
CREATE TABLE `students` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
`gender` varchar(10) NOT NULL,
`birthday` date DEFAULT NULL,
`create_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
在INSERT语句中使用NOW()函数
在向上述定义的students
表格中插入数据时,我们可以使用NOW()
函数来获取当前时间,并自动将时间插入到create_time
列中,示例代码如下:
INSERT INTO `students`(`name`,`gender`,`birthday`,`create_time`)
VALUES('张三','男','2007-11-22',NOW());
在UPDATE语句中使用NOW()函数
在更新students
表格中某一行的数据时,我们同样可以使用NOW()
函数来获取当前时间,并自动将时间插入到create_time
列中,示例代码如下:
UPDATE `students`
SET `birthday`='2008-12-12',`create_time`=NOW()
WHERE `id`=1;
结论
以上就是在MySQL表格中自动插入当前日期和时间的方法,我们可以使用NOW()
函数来获取当前时间,但是需要注意目标列的数据类型必须是DATE
,DATETIME
或TIMESTAMP
类型,否则会提示数据类型不匹配的错误。