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

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没有内置的函数直接计算工作日。以下是一种基本的方法:

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

相关文章:

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

文章目录 前言1. 加上或减去若干天、若干月或若干年基本语法使用场景注意事项运用实例分析说明2. 确定两个日期相差多少天基本语法使用场景注意事项运用实例分析说明3. 确定两个日期之间有多少个工作日基本语法使用场景注意事项运用实例分析说明4. 确定两个日期相隔多少个月或多…...

运算指令(PLC)

加 ADD 减 SUB 乘 MUL 除 DIV 浮点运算 整数运算...

「Mac畅玩鸿蒙与硬件49」UI互动应用篇26 - 数字填色游戏

本篇教程将带你实现一个数字填色小游戏,通过简单的交互逻辑,学习如何使用鸿蒙开发组件创建趣味性强的应用。 关键词 UI互动应用数字填色动态交互逻辑判断游戏开发 一、功能说明 数字填色小游戏包含以下功能: 数字选择:用户点击…...

机器学习经典算法——逻辑回归

目录 算法介绍 算法概念 算法的优缺点 LogisticRegression()函数理解 环境准备 算法练习 算法介绍 算法概念 逻辑回归(Logistic Regression)是一种广泛应用于分类问题的机器学习算法。 它基于线性回归的思想,但通过引入一个逻辑函数&…...

【数据仓库金典面试题】—— 包含详细解答

大家好,我是摇光~,用大白话讲解所有你难懂的知识点 该篇面试题主要针对面试涉及到数据仓库的数据岗位。 以下都是经典的关于数据仓库的问题,希望对大家面试有用~ 1、什么是数据仓库?它与传统数据库有何区别? 数据仓库…...

【UE5 C++课程系列笔记】19——通过GConfig读写.ini文件

步骤 1. 新建一个Actor类,这里命名为“INIActor” 2. 新建一个配置文件“Test.ini” 添加一个自定义配置项 3. 接下来我们在“INIActor”类中获取并修改“CustomInt”的值。这里定义一个方法“GetINIVariable” 方法实现如下,其中第16行代码用于构建配…...

JS 中 json数据 与 base64、ArrayBuffer之间转换

JS 中 json数据 与 base64、ArrayBuffer之间转换 json 字符串进行 base64 编码 function jsonToBase64(json) {return Buffer.from(json).toString(base64); }base64 字符串转为 json 字符串 function base64ToJson(base64) {try {const binaryString atob(base64);const js…...

USB 驱动开发 --- Gadget 驱动框架梳理

编译链接 #----》 linux_5.10/drivers/usb/gadget/Makefileobj-$(CONFIG_USB_LIBCOMPOSITE) libcomposite.o libcomposite-y : usbstring.o config.o epautoconf.o libcomposite-y composite.o functions.o configfs.o u_f.oobj-$(CONFIG_USB_GADG…...

细说STM32F407单片机中断方式CAN通信

目录 一、工程配置 1、时钟、DEBUG、USART6、GPIO、CodeGenerator 2、CAN1 3、NVIC 二、软件设计 1、KEYLED 2、can.h 3、can.c (1)CAN1中断初始化 (2)RNG初始化和随机数产生 (3) 筛选器组设置…...

Python应用指南:高德交通态势数据

在现代城市的脉络中,交通流量如同流动的血液,交通流量的动态变化对出行规划和城市管理提出了更高的要求。为了应对这一挑战,高德地图推出了交通态势查询API,旨在为开发者提供一个强大的工具,用于实时获取指定区域或道路…...

医学图像分析工具01:FreeSurfer || Recon -all 全流程MRI皮质表面重建

FreeSurfer是什么 FreeSurfer 是一个功能强大的神经影像学分析软件包,广泛用于处理和可视化大脑的横断面和纵向研究数据。该软件由马萨诸塞州总医院的Martinos生物医学成像中心的计算神经影像实验室开发,旨在为神经科学研究人员提供一个高效、精确的数据…...

.NET框架用C#实现PDF转HTML

HTML作为一种开放标准的网页标记语言,具有跨平台、易于浏览和搜索引擎友好的特性,使得内容能够在多种设备上轻松访问并优化了在线分享与互动。通过将PDF文件转换为HTML格式,我们可以更方便地在浏览器中展示PDF文档内容,同时也更容…...

mamba-ssm安装

注意1:mamba-ssm要与casual-conv1d一起安装。 注意2:mamba-ssm与cuda、pytorch版本要对应。需要看你下载的代码的requirements.txt causal-conv1d与mamba的whl包官网下载: https://github.com/Dao-AILab/causal-conv1d/releases?page3 htt…...

网络IP协议

IP(Internet Protocol,网际协议)是TCP/IP协议族中重要的协议,主要负责将数据包发送给目标主机。IP相当于OSI(图1)的第三层网络层。网络层的主要作用是失陷终端节点之间的通信。这种终端节点之间的通信也叫点…...

双指针算法详解

目录 一、双指针 二、双指针题目 1.移动零 解法: 代码: 2.复写零 ​编辑 解法: 代码: 边界情况处理: 3.快乐数 ​编辑 解法:快慢指针 代码: 4.盛水最多的容器 解法:(对撞指针)…...

MySQL的最左匹配原则是什么

最左匹配原则是应用于联合索引的规则。 对于以下表F:f1,f2,f3;建立了联合索引(f2,f3),那么我们在查询的时候如果是: select * from F where f2 ? and f3 ?; 或 sele…...

LeetCode:106.从中序与后序遍历序列构造二叉树

跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的! 代码随想录 LeetCode:106.从中序与后序遍历序列构造二叉树 给定两个整数数组 inorder 和 postorder ,其中 inorder …...

22. 【.NET 8 实战--孢子记账--从单体到微服务】--记账模块--切换主币种

这篇文章我们将结合主币种设置以及收支记录实现切换主币种后重新计算以前记录的转换后的金额。那么,为什么要在切换主币种后要重新计算转换后的金额呢?有以下两个原因: 统一的币种,方便我们统计数据方便用户按照当地的币种查看收…...

01.02周四F34-Day43打卡

文章目录 1. 地是湿的。昨晚估计下雨了。2. 你可能把包丢在餐厅里了吧?3. 她说他可能误了航班。4. 我本来应该早点来的,但路上特别堵。5. 约翰可能在那次事故中受了重伤。6. 这是一个情景对话7. 我本可以走另一条路的。8. 我准是瘦了不少,你看我这裤子现在多肥。9. 钱没了!会…...

行业商机信息付费小程序系统开发方案

行业商机信息付费小程序系统,主要是整合优质行业资源,实时更新的商机信息。在当今信息爆炸的时代,精准、高效地获取行业商机信息对于企业和个人创业者而言至关重要。 一、使用场景 日常浏览:用户在工作间隙或闲暇时间&#xff0c…...

基于服务器使用 apt 安装、配置 Nginx

🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

CMake控制VS2022项目文件分组

我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...

力扣热题100 k个一组反转链表题解

题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...

JavaScript 数据类型详解

JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型&#xff08;Primitive&#xff09; 和 对象类型&#xff08;Object&#xff09; 两大类&#xff0c;共 8 种&#xff08;ES11&#xff09;&#xff1a; 一、原始类型&#xff08;7种&#xff09; 1. undefined 定…...

GitHub 趋势日报 (2025年06月06日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...

C# 表达式和运算符(求值顺序)

求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如&#xff0c;已知表达式3*52&#xff0c;依照子表达式的求值顺序&#xff0c;有两种可能的结果&#xff0c;如图9-3所示。 如果乘法先执行&#xff0c;结果是17。如果5…...

Unity UGUI Button事件流程

场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...

如何应对敏捷转型中的团队阻力

应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中&#xff0c;明确沟通敏捷转型目的尤为关键&#xff0c;团队成员只有清晰理解转型背后的原因和利益&#xff0c;才能降低对变化的…...