NOW()函数用于获取数据库服务器当前日期和时间,格式为YYYY-MM-DD HH:MM:SS,常用于记录操作时间、设置默认值或时间比较;在SELECT、INSERT、UPDATE语句中可直接调用,如SELECT NOW()、INSERT INTO users (name, created_time) VALUES ('张三', NOW())、UPDATE users SET updated_time = NOW() WHERE id = 1;与SYSDATE()的区别在于NOW()返回语句开始执行时的时间且保持不变,而SYSDATE()返回函数实际执行的实时时间,可能因延迟而变化;使用时需确保数据库服务器时间准确以保证数据正确性。

在SQL中,NOW() 函数用于获取数据库服务器当前的日期和时间。返回值格式通常为 YYYY-MM-DD HH:MM:SS,适用于需要记录操作时间、设置默认值或进行时间比较的场景。
NOW函数的基本用法
NOW() 是标准的日期函数,在大多数数据库系统(如MySQL)中支持良好。可以直接在 SELECT 语句中调用:
SELECT NOW();
执行后会返回类似 2025-04-05 14:30:22 的结果,表示当前系统时间。
在INSERT语句中使用NOW()
常用于插入数据时自动记录创建时间:
- 假设有一张用户表 users,包含字段 id、name 和 created_time
- 插入数据时直接使用 NOW() 赋值时间字段
INSERT INTO users (name, created_time) VALUES ('张三', NOW());
这样 created_time 就会自动保存记录插入的精确时间。
在UPDATE中更新时间字段
可用于更新某条记录的修改时间:
UPDATE users SET updated_time = NOW() WHERE id = 1;
这条语句将 id 为 1 的用户记录的更新时间设为当前时间,适合做“最后修改时间”标记。
与SYSDATE()的区别(以MySQL为例)
虽然两者都返回当前时间,但有细微差别:
- NOW() 返回语句开始执行时的时间,整个过程中保持不变
- SYSDATE() 返回函数实际执行时的实时时间,可能随程序延迟而变化
例如在延时操作中:
SELECT NOW(), SLEEP(2), NOW(); —— 两个 NOW() 值相同
SELECT SYSDATE(), SLEEP(2), SYSDATE(); —— 两个 SYSDATE() 可能相差2秒
基本上就这些。NOW() 是最常用也最简单的获取当前时间的方式,适合绝大多数时间记录需求。注意确保数据库服务器时间设置正确,否则会影响数据准确性。










