在mysql数据库的日常开发中,获取当前时间是非常高频的操作,now函数作为mysql内置的时间函数,能够快速返回当前的日期和时间,使用起来简单高效,是处理时间相关逻辑的首选工具。
now函数的基本语法
now函数是mysql的无参数内置函数,调用时不需要传入任何参数,基本语法格式如下:
-- 直接调用now函数获取当前时间 SELECT NOW();
执行上述语句后,会返回一个包含当前日期和时间的结果,默认格式为YYYY-MM-DD HH:MM:SS,对应的数据类型为DATETIME。
now函数的常见使用场景
1. 插入数据时记录当前时间
在创建数据表时,经常会需要记录数据的创建时间或者最后更新时间,此时可以在插入语句中使用now函数自动填充时间字段,不需要手动传入时间值。
首先创建一个测试表:
-- 创建用户表,包含创建时间字段
CREATE TABLE user_info (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
create_time DATETIME NOT NULL
);
插入数据时,使用now函数填充create_time字段:
-- 插入用户数据,自动记录创建时间
INSERT INTO user_info (username, create_time) VALUES ('test_user', NOW());
执行后查询表数据,可以看到create_time字段已经被自动填充为插入数据时的当前时间。
2. 筛选指定时间范围的数据
在查询数据时,经常需要筛选最近一段时间内的数据,此时可以结合now函数和时间计算函数实现条件过滤。
比如查询最近24小时内创建的用户数据:
-- 查询最近24小时内创建的用户 SELECT * FROM user_info WHERE create_time >= NOW() - INTERVAL 1 DAY;
上述语句中,INTERVAL 1 DAY表示1天的时间间隔,用当前时间减去1天,就能得到24小时前的时间,从而筛选出符合条件的数据。
now函数相关注意事项
- now函数返回的是执行SQL语句时的当前时间,在同一个SQL语句中多次调用now函数,返回的结果是相同的。
- 如果需要获取更高精度的时间,比如包含微秒,可以使用
NOW(6),返回的格式会变为YYYY-MM-DD HH:MM:SS.ffffff。 - now函数返回的是
DATETIME类型,如果需要仅获取日期部分,可以结合DATE()函数使用,例如SELECT DATE(NOW());会返回当前日期,格式为YYYY-MM-DD。 - 和
CURDATE()、CURTIME()函数不同,now函数同时返回日期和时间,而CURDATE()仅返回当前日期,CURTIME()仅返回当前时间,开发者可以根据实际需求选择合适的函数。
now函数与其他时间函数的对比
为了更清晰地了解now函数的特点,我们可以将其和同类型的时间函数做对比,具体差异如下:
| 函数名称 | 返回类型 | 返回内容 | 适用场景 |
|---|---|---|---|
| NOW() | DATETIME | 当前日期和时间 | 需要同时记录日期和时间的场景 |
| CURDATE() | DATE | 当前日期 | 仅需要日期信息的场景 |
| CURTIME() | TIME | 当前时间 | 仅需要时间信息的场景 |
| SYSDATE() | DATETIME | 函数执行瞬间的当前时间 | 需要获取函数调用实时时间的场景 |
需要注意的是,SYSDATE()函数和now函数的区别在于,SYSDATE()会在函数执行的瞬间获取时间,而now函数在SQL语句开始执行时获取时间,在同一个SQL语句中多次调用SYSDATE()可能会返回不同的结果。
在实际开发中,如果没有特殊需求,优先使用now函数获取当前时间,它的执行效率更高,且结果更稳定,适合大多数时间记录场景。
mysqlnow函数当前时间datetime类型修改时间:2026-06-23 17:03:33