NOW()函数返回MySQL服务器当前日期时间(格式'YYYY-MM-DD HH:MM:SS'),语句级一致;等价于CURRENT_TIMESTAMP(),区别于毫秒级变化的SYSDATE(),支持默认值及自动更新,受服务器时区影响。

在 MySQL 中,查看当前时间最常用的方法是使用 NOW() 函数。它返回服务器当前的日期和时间(精确到秒),格式为 'YYYY-MM-DD HH:MM:SS'。
NOW() 函数的基本用法
直接在查询中调用即可获取当前时间:
-
SELECT NOW();—— 返回类似2024-05-20 14:23:56的结果 - 支持在 INSERT、UPDATE 或 WHERE 条件中使用,例如:
INSERT INTO log (msg, created_at) VALUES ('login', NOW());
与其它时间函数的区别
MySQL 提供多个时间函数,用途略有不同:
- NOW():返回执行语句时的当前时间(语句级一致性,同一语句中多次调用结果相同)
- CURRENT_TIMESTAMP():与 NOW() 完全等价,可互换使用
- SYSDATE():返回函数实际执行时刻的时间(毫秒级精度,同一语句中多次调用可能不同)
-
CURDATE():只返回日期部分(
'YYYY-MM-DD') -
CURTIME():只返回时间部分(
'HH:MM:SS')
在建表或默认值中使用 NOW()
可以将 NOW() 作为字段默认值(需注意 MySQL 版本限制):
- MySQL 5.6.5+ 支持 DATETIME/TIMESTAMP 字段设置动态默认值:
created_at DATETIME DEFAULT CURRENT_TIMESTAMP - 若要自动更新时间,可加
ON UPDATE CURRENT_TIMESTAMP - 旧版本只能用触发器模拟类似行为
注意事项
使用时需留意以下几点:
- NOW() 返回的是 MySQL 服务器所在系统的时间,不是客户端本地时间
- 时区影响结果:可通过
SELECT @@time_zone;查看当前会话时区 - 如需 UTC 时间,改用
UTC_TIMESTAMP() - 在存储过程中或复杂查询里,NOW() 值在语句开始时确定,不会随执行过程变化










