Mysql SQL 超实用的7个日期算术运算实例(10k)

文章目录

  • 前言
      • 1. 加上或减去若干天、若干月或若干年
        • 基本语法
        • 使用场景
        • 注意事项
        • 运用实例
        • 分析说明
      • 2. 确定两个日期相差多少天
        • 基本语法
        • 使用场景
        • 注意事项
        • 运用实例
        • 分析说明
      • 3. 确定两个日期之间有多少个工作日
        • 基本语法
        • 使用场景
        • 注意事项
        • 运用实例
        • 分析说明
      • 4. 确定两个日期相隔多少个月或多少年
        • 基本语法
        • 使用场景
        • 注意事项
        • 运用实例
        • 分析说明
      • 5. 确定两个日期相隔多少秒、多少分钟或多少小时
        • 基本语法
        • 使用场景
        • 注意事项
        • 运用实例
        • 分析说明
      • 6. 确定两个日期相隔多少秒、多少分钟或多少小时
        • 基本语法
        • 使用场景
        • 注意事项
        • 运用实例
        • 分析说明
      • 7. 确定当前记录和下一条记录存储的日期相隔多少天
        • 基本语法
        • 使用场景
        • 注意事项
        • 运用实例
        • 分析说明
  • 总结


前言

在MySQL中,可以使用各种函数来执行日期和时间的算术运算。以下是常用的日期算术运算函数:

  1. DATE_ADD() 和 DATE_SUB():在日期上加上或减去指定的时间间隔。
  2. TIMESTAMPDIFF():计算两个日期之间的差异,以指定的时间单位返回。
  3. DATEDIFF():计算两个日期之间的天数差异。
  4. DAYOFWEEK():确定一个日期是星期几,用于计算工作日。
  5. UNIX_TIMESTAMP():将日期转换为Unix时间戳,用于计算秒数差异。

1. 加上或减去若干天、若干月或若干年

基本语法

在MySQL中,可以使用DATE_ADD()DATE_SUB()函数来对日期进行算术运算。

  • 加上若干天、月或年

    DATE_ADD(date, INTERVAL value unit);
    
    • date:原始日期。
    • value:要加上的天数、月数或年数。
    • unit:时间单位,可以是DAYMONTHYEAR
  • 减去若干天、月或年

    DATE_SUB(date, INTERVAL value unit);
    
    • date:原始日期。
    • value:要减去的天数、月数或年数。
    • unit:时间单位,可以是DAYMONTHYEAR
使用场景
  • 日期调整:计算未来的日期或过去的日期,如计算项目的开始日期或结束日期。
  • 年龄计算:根据出生日期计算年龄。
  • 到期日计算:计算账单或订阅的到期日。
注意事项
  • 闰年:在加上或减去年时,需要注意闰年的影响,特别是当涉及到2月份时。
  • 月份天数:在加上或减去月时,如果目标月没有足够的天数,日期会调整到该月的最后一天。例如,从1月31日减去1个月会得到2月28日或29日。
  • 负值:可以指定负值来减去天数、月数或年数。
运用实例
  • 加上10天

    SELECT DATE_ADD('2023-01-01', INTERVAL 10 DAY);
    
    • 结果:2023-01-11
  • 减去2个月

    SELECT DATE_SUB('2023-03-15', INTERVAL 2 MONTH);
    
    • 结果:2023-01-15
  • 加上1年

    SELECT DATE_ADD('2023-01-01', INTERVAL 1 YEAR);
    
    • 结果:2024-01-01
分析说明
  • DATE_ADD()DATE_SUB() 是非常强大的函数,它们允许你轻松地对日期进行加减运算。
  • 当涉及到月份和年份的加减时,这些函数会自动处理不同月份的天数和闰年,使得日期计算变得简单。
  • 在进行日期计算时,了解这些函数如何处理月份和年份的边界情况是非常重要的,这可以帮助你避免计算错误。
  • 这些函数在处理业务逻辑,如日期有效性检查、年龄计算、日期范围查询等方面非常有用。

通过使用这些函数,你可以在MySQL中轻松地进行日期算术运算,以支持各种需要日期计算的业务需求。

2. 确定两个日期相差多少天

基本语法

在MySQL中,可以使用DATEDIFF()函数来确定两个日期之间相差的天数。

DATEDIFF(date1, date2);
  • date1:较晚的日期。
  • date2:较早的日期。
使用场景
  • 时间间隔计算:计算两个事件之间的时间间隔,如项目持续时间、年龄或两个订单之间的时间差。
  • 历史数据分析:分析特定时间段内的数据变化,如用户活跃度或销售趋势。
  • 日程规划:确定事件或预约之间的间隔,如会议或假期的安排。
注意事项
  • 日期顺序DATEDIFF()函数要求第一个参数是较晚的日期,第二个参数是较早的日期。如果顺序颠倒,结果将是负数。
  • 时区影响:确保两个日期都在同一时区,否则可能会影响计算结果。
  • 日期格式:确保两个日期的格式正确,且能够被MySQL正确解析。
运用实例

假设我们想要计算从2023-01-012023-01-15之间相差的天数:

SELECT DATEDIFF('2023-01-15', '2023-01-01') AS days_difference;
  • 结果:14
分析说明
  • 直观结果DATEDIFF()函数提供了一个直观的方式来获取两个日期之间的天数差异。
  • 负值处理:如果你需要避免负值,可以使用ABS()函数来获取绝对值:ABS(DATEDIFF(date1, date2))
  • 性能DATEDIFF()是一个轻量级的函数,通常对性能影响很小,适合在大型查询中使用。
  • 业务逻辑:在业务逻辑中,这个函数可以用来计算用户注册后的活动天数、产品的生命周期、或者任何需要基于时间间隔的计算。

通过使用DATEDIFF()函数,你可以轻松地在MySQL中计算两个日期之间的天数差异,这对于许多需要日期间隔分析的场景非常有用。

3. 确定两个日期之间有多少个工作日

基本语法

在MySQL中,确定两个日期之间有多少个工作日通常需要自定义查询或存储过程,因为MySQL没有内置的函数直接计算工作日。以下是一种基本的方法:

SELECT
    SUM(CASE
            WHEN WEEKDAY(date) BETWEEN 1 AND 5 THEN 1
            ELSE 0
        END) AS workdays
FROM
    (SELECT DATE_ADD('起始日期', INTERVAL a.day - 1 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/949035.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

论文解读 | NeurIPS'24 IRCAN:通过识别和重新加权上下文感知神经元来减轻大语言模型生成中的知识冲突...

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 点击 阅读原文 观看作者讲解回放! 作者简介 史丹,天津大学博士生 内容简介 大语言模型(LLM)经过海量数据训练后编码了丰富的世界知识。最近的研究表明&#xff0c…

在DJI无人机上运行VINS-FUISON(PSDK 转 ROS)

安装ceres出现以下报错,将2版本的ceres换成1版本的ceres CMake did not find one.Could not find a package configuration file provided by "absl" with any ofthe following names:abslConfig.cmakeabsl-config.cmakeAdd the installation prefix of …

A*算法与人工势场法结合的路径规划(附MATLAB源码)

A*算法与人工势场法(APF)结合实现路径规划 路径规划是机器人、无人机及自动驾驶等领域中的一个重要问题。本文结合了经典的 A* 算法与 人工势场法(Artificial Potential Field, APF),实现了一种改进的路径规划方法。下…

SASS 简化代码开发的基本方法

概要 本文以一个按钮开发的实例,介绍如何使用SASS来简化CSS代码开发的。 代码和实现 我们希望通过CSS开发下面的代码样式,从样式来看,每个按钮的基本样式相同,就是颜色不同。 如果按照传统的方式开发,需要开发btn &…

Spring为什么要用三级缓存解决循环依赖?

1.什么是循环依赖 本文为了方便说明,先设置两个业务层对象,命名为AService和BService。其中Spring是如何把一个Bean对象创建出来的,其生命周期如下: 构造方法–> 不同对象 --> 注入依赖 -->初始化前 --> 初始化后–&…

R shiny app | 网页应用 空格分隔的文本文件在线转csv

shiny 能快速把R程序以web app的形式提供出来,方便使用,降低技术使用门槛。 本文提供的示例:把空格分隔的txt文件转为逗号分隔的csv文件。 前置依赖:需要有R环境(v4.2.0),安装shiny包(v1.9.1)。括号内是我使用的版本…

LLM - 使用 LLaMA-Factory 部署大模型 HTTP 多模态服务 教程 (4)

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/144881432 大模型的 HTTP 服务,通过网络接口,提供 AI 模型功能的服务,允许通过发送 HTTP 请求,交互大模型,通常基于云计算架构,无需在本地部署复杂的模型和硬件,…

【《python爬虫入门教程11--重剑无峰168》】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 【《python爬虫入门教程11--selenium的安装与使用》】 前言selenium就是一个可以实现python自动化的模块 一、Chrome的版本查找?-- 如果用edge也是类似的1.chrome…

自定义Bitmap

使用场景 Bitmap 是一种使用 位数组(bit array) 来表示数据的结构,每一位(bit)表示一个值的状态。由于每个位只占用 1 bit,因此Bitmap 的存储效率非常高,特别适用于大数据去重、标记布尔值状态…

公司资产网站

本文结尾处获取源码。 本文结尾处获取源码。 本文结尾处获取源码。 一、相关技术 后端:Java、JavaWeb / Springboot。前端:Vue、HTML / CSS / Javascript 等。数据库:MySQL 二、相关软件(列出的软件其一均可运行) I…

第431场周赛:最长乘积等价子数组、计算字符串的镜像分数、收集连续 K 个袋子可以获得的最多硬币数量、不重叠区间的最大得分

Q1、最长乘积等价子数组 1、题目描述 给你一个由 正整数 组成的数组 nums。 如果一个数组 arr 满足 prod(arr) lcm(arr) * gcd(arr),则称其为 乘积等价数组 ,其中: prod(arr) 表示 arr 中所有元素的乘积。gcd(arr) 表示 arr 中所有元素的…

掌握RabbitMQ:全面知识点汇总与实践指南

前言 RabbitMQ 是基于 AMQP 高级消息队列协议的消息队列技术。 特点:它通过发布/订阅模型,实现了服务间的高度解耦。因为消费者不需要确保提供者的存在。 作用:服务间异步通信;顺序消费;定时任务;请求削…

国内Ubuntu环境Docker部署Stable Diffusion入坑记录

国内Ubuntu环境Docker部署Stable Diffusion入坑记录 本文旨在记录使用dockerpython进行部署 stable-diffusion-webui 项目时遇到的一些问题,以及解决方案,原项目地址: https://github.com/AUTOMATIC1111/stable-diffusion-webui 问题一览: …

SpringBoot3-深入理解自动配置类的原理(尚硅谷SpringBoot3-雷神)

文章目录 目录了解自动配置 一、导入对应场景的Mean依赖:1、引入依赖**找到自动配置类的所有配置都存放在哪里** 二、编写主程序:SpringBootApplication观察源码时所需要知道的几个核心注解:1、观察SpringBootApplication源码都做了什么 三、…

【沉默的羔羊心理学】汉尼拔的“移情”游戏:操纵与理解的艺术,精神分析学视角下的角色互动

终极解读《沉默的羔羊》:弗洛伊德精神分析学视角下的深层剖析 关键词 沉默的羔羊弗洛伊德精神分析学角色心理意识与潜意识性别与身份 弗洛伊德精神分析学简介 弗洛伊德的精神分析学是心理学的一个重要分支,主要关注人类行为背后的无意识动机和冲突。…

字玩FontPlayer开发笔记3 性能优化 大量canvas渲染卡顿问题

字玩FontPlayer开发笔记3 性能优化 大量canvas渲染卡顿问题 字玩FontPlayer是笔者开源的一款字体设计工具,使用Vue3 ElementUI开发,源代码: github: https://github.com/HiToysMaker/fontplayer gitee: https://gitee.com/toysmaker/fontpl…

javaEE-网络编程-3 UDP

目录 Socaket套接字 UDP数据报套字节编程 1.DatagrameSocket类 DatagramSocaket构造方法: DatagramSocaket常用方法: 2.DatagramPacket类 DatagramPacket构造方法: UDP回显服务器实现 UDP服务端实现: 创建一个Socket类对象&#xf…

Linux:操作系统不朽的传说

操作系统是计算机的灵魂,它掌控着计算机的硬件和软件资源,为用户和应用程序提供了一个稳定、高效、安全的运行环境。 在众多操作系统中,Linux 的地位举足轻重。它被广泛应用于服务器、云计算、物联网、嵌入式设备等领域。Linux 的成功离不开…

模拟出一个三维表面生成表面点,计算体积,并处理边界点

python代码 生成表面点,计算体积,并处理边界点,最终模拟出一个三维表面。 步骤: 初始参数设置: initial_fixed_point:一个初始固定点的坐标。 slop_thre:坡度阈值。 v_thre:体积阈值。 slope_rad:将坡度从度转换为弧度。 step_size:步长。 lam_x, lam_y:泊松分布的…

STM32拓展 低功耗案例1:睡眠模式 (register)

需求描述 让MCU进入睡眠模式,然后通过串口发送消息来唤醒MCU退出睡眠模式。观察LED在进入休眠模式后是否仍然开启。 思考 首先睡眠模式,唤醒的条件是中断,外部内部都可以,这里的串口接收中断时内部中断。 拓展:中断…