mysql中NOW函数如何使用_mysql NOW函数操作

来源:这里教程网 时间:2026-02-28 20:21:31 作者:

在MySQL中,NOW() 函数用于获取当前的日期和时间,格式为 YYYY-MM-DD HH:MM:SS。这个函数常用于插入或更新记录时自动记录当前时间,比如创建时间、更新时间等场景。

基本语法

NOW() 函数不接受任何参数,直接调用即可:

NOW()

返回值是当前的日期和时间,精确到秒(在某些版本中可支持微秒,取决于系统和配置)。

常见使用场景

1. 插入当前时间到数据表

假设有一张用户注册表,需要记录用户的注册时间:

CREATE TABLE users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  username VARCHAR(50),
  created_at DATETIME DEFAULT NULL
);

插入数据时使用 NOW() 自动填充当前时间:

INSERT INTO users (username, created_at) VALUES ('john', NOW());

这样,created_at 字段就会保存执行插入操作时的日期和时间。

2. 作为字段默认值

更便捷的方式是在建表时将 NOW() 设为默认值:

CREATE TABLE logs (
  id INT AUTO_INCREMENT PRIMARY KEY,
  action VARCHAR(100),
  log_time DATETIME DEFAULT CURRENT_TIMESTAMP
);

注意:MySQL 中推荐使用 CURRENT_TIMESTAMP 作为默认值,它与 NOW() 效果相同,且是标准写法。从 MySQL 5.6.5 开始,DEFAULT NOW() 也支持,但建议使用 CURRENT_TIMESTAMP 更稳妥。

3. 在 UPDATE 操作中更新时间

更新某条记录时,同时更新其修改时间:

UPDATE users SET username = 'jane', updated_at = NOW() WHERE id = 1;

前提是表中有 updated_at 字段。

与时区相关说明

NOW() 返回的是当前会话所设置的时区时间。可以通过以下命令查看当前时区:

SELECT @@session.time_zone;

如果需要统一使用 UTC 时间,可设置会话时区:

SET time_zone = '+00:00';

与其他时间函数对比

NOW():返回当前日期和时间(datetime 类型) CURDATE():只返回当前日期,如 2025-04-05 CURTIME():只返回当前时间,如 14:23:10 SYSDATE():与 NOW() 类似,但在包含延迟执行的语句中行为不同

基本上就这些。NOW() 是日常开发中最常用的时间函数之一,适合记录操作发生的准确时间点。只要注意字段类型设为 DATETIME 或 TIMESTAMP,并合理设置默认值或手动调用,就能高效使用。

相关推荐