当前位置: 首页 > news >正文

mysql中的计算日期函数 理解、用法

三种计算日期的函数

函数用途示例
DATEDIFF()计算两个日期的天数差DATEDIFF('2023-10-05', '2023-10-01') → 4
TIMESTAMPDIFF()按指定单位(年、月、小时等)计算差TIMESTAMPDIFF(MONTH, '2023-01-01', '2023-03-01') → 2
DATE_ADD()日期加法DATE_ADD('2023-10-01', INTERVAL 7 DAY) → '2023-10-08'

 常用的是:DATEDIFF()基本语法

sql

DATEDIFF(end_date, start_date)
  • 参数
    • end_date:结束日期(将被减数)。
    • start_date:开始日期(减数)。
  • 返回值end_date - start_date 的天数差(整数)。
    • 若 end_date 早于 start_date,返回负数。

示例场景

示例 1:基本计算

sql

SELECT 
    DATEDIFF('2023-10-05', '2023-10-01') AS diff_1,  -- 输出:4
    DATEDIFF('2023-10-01', '2023-10-05') AS diff_2;  -- 输出:-4
示例 2:结合表字段

sql

-- 计算订单下单日期与发货日期的间隔
SELECT 
    order_id,
    DATEDIFF(shipped_date, order_date) AS days_to_ship
FROM orders;
示例 3:动态日期

sql

-- 计算距离今天还有多少天
SELECT DATEDIFF('2023-12-31', CURDATE()) AS days_remaining;

 

常见问题与注意事项

1. 参数顺序陷阱
  • 确保第一个参数是更晚的日期,否则结果可能为负数:

    sql

    -- 错误写法(可能返回负数)
    SELECT DATEDIFF(start_date, end_date);
    -- 正确写法
    SELECT DATEDIFF(end_date, start_date);
    
2. 时间部分被忽略
  • 若需精确到小时/分钟,改用 TIMESTAMPDIFF()

    sql

    SELECT TIMESTAMPDIFF(HOUR, '2023-10-01 08:00:00', '2023-10-01 20:30:00');
    -- 输出:12(小时差)
    
3. 时区无关性
  • 计算基于输入的日期值,不自动转换时区。若需处理时区,先显式转换:

    sql

    SELECT DATEDIFF(CONVERT_TZ('2023-10-01', '+00:00', '+08:00'), '2023-09-30');
  • 核心用途:快速计算两个日期的间隔天数。
  • 适用场景:统计业务周期、计算有效期剩余天数、分析事件间隔等。
  • 避坑指南:注意参数顺序、忽略时间的特性,避免无效日期输入。

 

相关文章:

  • 从0-1学习Mysql第六章: 缓存与性能优化
  • Windows提权之基本流程(二)
  • SIM盾构建安全底座的障碍
  • 穿越AI边界:深度集成DeepSeek API与云平台的实践之路
  • seacmsv9报错注入
  • Pytorch使用手册-使用Wav2Vec2进行强制对齐(专题二十五)
  • 排查和解决线程池瓶颈问题案例
  • 【Veristand】Veristand 预编写教程目录
  • 3-提前结束训练
  • 大模型应用: 多模态交互
  • C++ 106. 从中序与后序遍历序列构造二叉树 - 力扣(LeetCode)
  • mac os 使用 root 登录
  • ubuntu22.04系统如何自建2级ntp服务器
  • Uniapp 小程序:语音播放与暂停功能的实现及优化方案
  • 相同的树-
  • 15.5 基于 RetrievalQA 的销售话术增强系统实战:构建智能销售大脑
  • RAG项目实战:金融问答系统
  • 数据存储:使用Python存储数据到redis详解
  • js 获取节点相对于屏幕的坐标位置,获取节点的宽高,获取鼠标事件回调的鼠标位置,计算鼠标相对于某个节点下的坐标
  • 【量化科普】Leverage,杠杆
  • 小耳朵等来了春天:公益义诊筛查专家走进安徽安庆
  • 网约车座椅靠背张贴“差评者得癌症”,如祺出行:未收到投诉无法处理
  • 浙能集团原董事长童亚辉被查,还是杭州市书法家协会主席
  • Manus向全球用户开放注册
  • 习近平出席中拉论坛第四届部长级会议开幕式并发表主旨讲话
  • 马克龙称法英正与乌克兰商议“在乌部署欧洲军队”