mysql常用时间函数

在 MySQL 中,时间处理函数非常常用,适用于日期、时间的查询和格式化等操作。以下是一些常用的时间处理函数及其示例查询。

1. 获取当前日期和时间

  • NOW():获取当前日期和时间(带时分秒)。

    SELECT NOW();  -- 输出示例: 2024-10-28 15:00:00
    
  • CURDATE():获取当前日期(不带时分秒)。

    SELECT CURDATE();  -- 输出示例: 2024-10-28
    
  • CURTIME():获取当前时间(仅时分秒)。

    SELECT CURTIME();  -- 输出示例: 15:00:00
    

2. 日期和时间的格式化

  • DATE_FORMAT():将日期格式化为特定格式。

    SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s') AS formatted_date;  
    -- %Y: 年, %m: 月, %d: 日, %H: 时, %i: 分, %s: 秒
    
    • 常用格式
      • '%Y-%m-%d':年-月-日
      • '%d/%m/%Y':日/月/年
      • '%H:%i:%s':时:分:秒

3. 日期和时间加减

  • DATE_ADD():向日期添加时间。

    SELECT DATE_ADD(NOW(), INTERVAL 1 DAY);    -- 当前时间加1天
    SELECT DATE_ADD(NOW(), INTERVAL 1 MONTH);  -- 当前时间加1月
    
  • DATE_SUB():从日期中减去时间。

    SELECT DATE_SUB(NOW(), INTERVAL 1 DAY);    -- 当前时间减1天
    SELECT DATE_SUB(NOW(), INTERVAL 1 YEAR);   -- 当前时间减1年
    

4. 日期的提取

  • YEAR():提取年份。

    SELECT YEAR(NOW());  -- 获取当前年份,如: 2024
    
  • MONTH():提取月份。

    SELECT MONTH(NOW());  -- 获取当前月份,如: 10
    
  • DAY():提取日。

    SELECT DAY(NOW());  -- 获取当前日期中的日,如: 28
    
  • HOUR()、MINUTE()、SECOND():提取时间中的时、分、秒。

    SELECT HOUR(NOW()), MINUTE(NOW()), SECOND(NOW());
    

5. 时间差计算

  • DATEDIFF():计算两个日期之间的天数差。

    SELECT DATEDIFF('2024-12-25', NOW());  -- 计算当前日期到2024-12-25的天数差
    
  • TIMESTAMPDIFF():计算时间差(支持年、月、日、小时、分钟、秒等)。

    SELECT TIMESTAMPDIFF(MONTH, '2023-01-01', NOW());  -- 计算当前日期与指定日期间的月数差
    SELECT TIMESTAMPDIFF(HOUR, '2024-10-28 12:00:00', NOW());  -- 小时差
    

6. 时间戳的转换

  • UNIX_TIMESTAMP():将日期转换为 Unix 时间戳(自 1970 年 1 月 1 日以来的秒数)。

    SELECT UNIX_TIMESTAMP(NOW());  -- 将当前时间转换为时间戳
    
  • FROM_UNIXTIME():将 Unix 时间戳转换为日期格式。

    SELECT FROM_UNIXTIME(1698508800);  -- 将时间戳转换为日期格式
    

7. 获取月份的第一天和最后一天

  • LAST_DAY():获取指定日期所在月份的最后一天。

    SELECT LAST_DAY(NOW());  -- 获取当前月份的最后一天
    
  • 获取月份的第一天:结合 DATE_FORMATCURDATE()

    SELECT DATE_FORMAT(CURDATE(), '%Y-%m-01');  -- 当前月份的第一天
    

8. 获取特定日期的信息

  • DAYOFWEEK():返回一周的第几天(1=星期日,7=星期六)。

    SELECT DAYOFWEEK(NOW());  -- 获取当前日期是一周中的第几天
    
  • DAYOFYEAR():返回一年中的第几天。

    SELECT DAYOFYEAR(NOW());  -- 获取当前日期是一年中的第几天
    
  • WEEK():返回一年中的第几周。

    SELECT WEEK(NOW());  -- 获取当前日期是一年中的第几周
    

9. 比较日期和时间

  • 日期相等比较

    SELECT * FROM table_name WHERE date_column = CURDATE();  -- 查询日期等于今天的数据
    
  • 时间区间查询

    SELECT * FROM table_name 
    WHERE date_column BETWEEN '2024-10-01' AND '2024-10-28';
    

10. 常用查询示例

  • 获取当天新增的数据

    SELECT * FROM table_name WHERE DATE(date_column) = CURDATE();
    
  • 获取最近 7 天的数据

    SELECT * FROM table_name WHERE date_column >= DATE_SUB(CURDATE(), INTERVAL 7 DAY);
    
  • 按年、月统计数据量

    SELECT YEAR(date_column) AS year, MONTH(date_column) AS month, COUNT(*) AS count
    FROM table_name
    GROUP BY year, month;
    

这些 MySQL 时间处理函数和查询示例可以帮助在日期和时间的操作中灵活地完成各种需求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值