mysql当前日期,可以灵活处理时间相关的查询和数据操作

时间:2025-09-22 13:05

在 MySQL 中,获取当前日期和时间的函数有多个,根据需求可以选择不同的函数:

1. 获取当前日期(年月日)

sql
SELECT CURDATE();  -- 格式:YYYY-MM-DD
SELECT CURRENT_DATE();  -- 同上,别名
 
示例:
sql
SELECT CURDATE();  -- 结果:2023-10-15(根据当前实际日期)
 

2. 获取当前时间(时分秒)

sql
SELECT CURTIME();  -- 格式:HH:MM:SS
SELECT CURRENT_TIME();  -- 同上,别名
 
示例:
sql
SELECT CURTIME();  -- 结果:14:30:25(根据当前实际时间)
 

3. 获取当前日期和时间(完整时间戳)

sql
SELECT NOW();  -- 格式:YYYY-MM-DD HH:MM:SS
SELECT CURRENT_TIMESTAMP();  -- 同上,别名
SELECT SYSDATE();  -- 类似 NOW(),但返回函数执行时的时间
 
示例:
sql
SELECT NOW();  -- 结果:2023-10-15 14:30:25
 

4. 日期时间的常见用法

  • 插入当前日期到表中
    sql
    INSERT INTO orders (order_date, create_time) 
    VALUES (CURDATE(), NOW());
    
     
     
  • 查询今天的数据
    sql
    SELECT * FROM logs 
    WHERE DATE(create_time) = CURDATE();
    
     
     
  • 计算日期差
    sql
    -- 计算两个日期之间的天数
    SELECT DATEDIFF('2023-12-31', CURDATE()) AS days_remaining;
    
     
     
  • 日期格式化(结合 DATE_FORMAT):
    sql
    -- 格式化为:年-月-日 时:分
    SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i') AS formatted_time;
    
     
     

注意事项

  • NOW() 和 SYSDATE() 的区别:NOW() 返回语句开始执行的时间,SYSDATE() 返回函数实际执行的时间(在长事务中可能不同)。
  • 日期函数返回的是 MySQL 服务器的系统时间,而非客户端时间。
  • 可在表设计时用 CURRENT_TIMESTAMP 作为默认值,自动记录插入 / 更新时间:
    sql
    CREATE TABLE test (
        id INT,
        create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
        update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
    );
    
     
     
根据实际需求选择合适的日期函数,可以灵活处理时间相关的查询和数据操作。
MySQL处理中文排序,除了拼音还能怎么办?一文掌握拼音与笔画排序的所有奥秘
一小时速通MySQL:零基础入门到精通,看这篇就够了(下篇)
一小时速通MySQL:零基础入门到精通,看这篇就够了(上篇)
MySQL小白下载指南 (以 Windows 为例)
MySQL安装太难?看完这篇就够了!小白专属下载安装指南
MySQL清空表数据,你用DELETE还是TRUNCATE?一文讲清两者核心差异与正确使用场景
从查询崩溃到丝滑流畅:详解MySQL性能优化的核心路径与高频实战技巧
MySQL性能优化漫谈:从金字塔法则到避坑指南,一位老DBA的架构思维与实践总结
千万级数据何去何从?一文读懂MySQL分库分表面试与工程实践的核心要点
mysql2,用于与 MySQL 数据库进行交互