当前位置: 首页 > 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');
  • 核心用途:快速计算两个日期的间隔天数。
  • 适用场景:统计业务周期、计算有效期剩余天数、分析事件间隔等。
  • 避坑指南:注意参数顺序、忽略时间的特性,避免无效日期输入。

 


文章转载自:
http://ashcan.sxnf.com.cn
http://audient.sxnf.com.cn
http://adrenotropic.sxnf.com.cn
http://buitenzorg.sxnf.com.cn
http://calefactory.sxnf.com.cn
http://assonance.sxnf.com.cn
http://bacteriocin.sxnf.com.cn
http://abasement.sxnf.com.cn
http://ceraceous.sxnf.com.cn
http://aic.sxnf.com.cn
http://bananalander.sxnf.com.cn
http://anomalistic.sxnf.com.cn
http://abolishable.sxnf.com.cn
http://chloracne.sxnf.com.cn
http://antichurch.sxnf.com.cn
http://abas.sxnf.com.cn
http://bookish.sxnf.com.cn
http://basement.sxnf.com.cn
http://betake.sxnf.com.cn
http://backdrop.sxnf.com.cn
http://cactus.sxnf.com.cn
http://airer.sxnf.com.cn
http://acrobatic.sxnf.com.cn
http://agorot.sxnf.com.cn
http://adiantum.sxnf.com.cn
http://ailing.sxnf.com.cn
http://birchite.sxnf.com.cn
http://airing.sxnf.com.cn
http://chorizo.sxnf.com.cn
http://allochthon.sxnf.com.cn
http://www.dtcms.com/a/38563.html

相关文章:

  • 从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,杠杆
  • Java中的锁机制:synchronized vs ReentrantLock,如何选择?
  • Python 函数式编程-装饰器
  • css中overflow-x:auto无效
  • 一周学会Flask3 Python Web开发-Jinja2模版中加载静态文件
  • 快速理解Raft分布式共识算法
  • CAS (Compare and swap “比较和交换“) [ Java EE 初阶 ]
  • 【借助深度学习剖析股票数据,实现优质股涨幅预测及推送通知】
  • 用PySpark和PyTorch实现跨境支付Hive数据仓库的反洗钱数据分析
  • python基础学习day01
  • JavaScript基础(BOM对象、DOM节点、表单)