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

news2025/1/5 14:58:56

文章目录

  • 前言
      • 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 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《类和对象:基础原理全解析(下篇)》

目录 一、类的构造函数的初始化列表1. 初始化列表的使用2. 初始化列表的初始化顺序3. 使用初始化列表的注意事项 二、类的自动类型转换1. 类的自动类型转换的使用2. 关闭类的自动类型转换 三、静态类成员1. 静态成员的特性2. 使用静态成员计算类创建了多少个对象3. 使用静态类成…

分析服务器 systemctl 启动gozero项目报错的解决方案

### 分析 systemctl start beisen.service 报错 在 Linux 系统中,systemctl 是管理系统和服务的主要工具。当我们尝试重启某个服务时,如果服务启动失败,systemctl 会输出错误信息,帮助我们诊断和解决问题。 本文将通过一个实际的…

Crosslink-NX应用连载(12):如何复用特殊功能管脚

作者:Hello,Panda 大家早上好。 昨天有朋友私信我,如何复用Crosslink-NX的特殊功能引脚如PROGRAMN、DONE、INITN诸如这些。熊猫君在这里简单介绍下: 以LIFCL-33U-8CTG104C为例,我们建立一个简单的指示灯LED周期闪烁的工程&…

go项目使用gentool生成model的gen.go问题

Gen Tool 是一个没有依赖关系的二进制文件,可以用来从数据库生成结构。 使用方法: go install gorm.io/gen/tools/gentoollatest在项目根目录,执行连接的数据库中指定某几张表结构生成数据库model层 gentool -dsn "root:123456tcp(localhost:330…

家政上门小程序如何创建?家政服务怎么能少了小程序帮手

在如今这个“忙到没时间打扫”的时代,家政服务变得越来越受欢迎。为了提高效率、减少沟通成本,很多家政公司都已经开始借助小程序的力量。那么,家政上门小程序到底该如何创建呢?小程序又是如何帮助家政服务更好地满足客户需求的呢?本文将为…

破解密码

rhel8/centos8 重置 root 密码 方法 1 : rd.break 第 1 步 重启系统,在下图所示界面按 e 键 第2步 找到linux这行,末尾空格后 输入 rd.break 第3步 查看,可选步骤 这里 sysroot 是以只读的形式挂载的,所以要以可读可…

本地小主机安装HomeAssistant开源智能家居平台打造个人AI管家

文章目录 前言1. 添加镜像源2. 部署HomeAssistant3. HA系统初始化配置4. HA系统添加智能设备4.1 添加已发现的设备4.2 添加HACS插件安装设备 5. 安装cpolar内网穿透5.1 配置HA公网地址 6. 配置固定公网地址 前言 大家好!今天我要向大家展示如何将一台迷你的香橙派Z…

自学记录鸿蒙API 13:实现多目标识别Object Detection

起步:什么叫多目标识别? 无论是生活中的动物识别、智能相册中的场景分类,还是工业领域的检测任务,都能看到多目标识别的身影。这次,我决定通过学习HarmonyOS最新的Object Detection API(API 13&#xff09…

javaEE-多线程进阶-JUC的常见类

juc:指的是java.util.concurrent包,该包中加载了一些有关的多线程有关的类。 目录 一、Callable接口 FutureTask类 参考代码: 二、ReentrantLock 可重入锁 ReentrantLock和synchronized的区别: 1.ReentantLock还有一个方法&#xff1a…

fpga系列 HDL:ModelSim显示模拟波形+十进制格式数值(临时方法和设置持久化的默认值)

模拟波形 FPGA中使用数字滤波器时,可通过观察模拟波形更好地查看滤波效果。可以通过ModelSim中的波形格式设置来实现更直观的波形显示。右键波形->Format-> Analog 效果 数值格式显示 不同的数值格式显示:右键波形->Radix-> Decimal 效果…

Linux 中 sysctl 和 systemctl 有什么区别?

sysctl 和 systemctl 是两个不同的命令行工具,它们在 Linux 系统中分别用于不同的目的。理解这两个命令的区别对于系统管理和配置非常重要。 1. sysctl 功能 用途:sysctl 用于动态地修改内核参数,这些参数控制着操作系统的某些行为。配置文…

【ArcGISPro/GeoScenePro】检查并处理高程数据

数据 https://arcgis.com/sharing/rest/content/items/535efce0e3a04c8790ed7cc7ea96d02d/data 数字高程模型 (DEM) 是一种栅格,可显示地面或地形的高程。 数字表面模型 (DSM) 是另一种高程栅格,可显示表面的高度,例如建筑物或树冠的顶部。 您需要准备 DEM 和 DSM 以供分析…

Redis数据库主要数据结构类型

Redis数据库提供了丰富多样的数据结构类型,以满足不同场景下的数据存储需求。以下是Redis中的主要数据结构类型: 一、五种基础数据结构 字符串(String) 简介:字符串是Redis最基本的数据类型,可以存储字符串…

基于Springboot + vue实现的校园周边美食探索及分享平台

🥂(❁◡❁)您的点赞👍➕评论📝➕收藏⭐是作者创作的最大动力🤞 💖📕🎉🔥 支持我:点赞👍收藏⭐️留言📝欢迎留言讨论 🔥🔥&…

Oracle Dataguard(主库为 Oracle 11g 单节点)配置详解(1):Oracle Dataguard 概述

Oracle Dataguard(主库为 Oracle 11g 单节点)配置详解(1):Oracle Dataguard 概述 目录 Oracle Dataguard(主库为 Oracle 11g 单节点)配置详解(1):Oracle Data…

mapbox基础,测面功能实现

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️Turf 框架二、🍀测面功能实现1. ☘️实现思路2. ☘️代码样例一、🍀…

基于下垂控制的构网变换器功率控制【微电网变流器】【Simulink】

目录 主要内容 理论研究 整体模型 PQ计算模块 功率控制模块 PWM反馈模块 结果一览 下载链接 主要内容 该仿真针对微电网中分布式电源接入后产生的谐波影响,除了污染网络外,还会恶化微电网变流器输出电流,为了消除谐波影响&a…

2025差旅平台推荐:一体化降本30%

医药行业因其高度专业化的特点,同时在运营过程中又极为依赖供应链和销售网络,因此差旅管理往往成为成本控制的重要环节。本期,我们以差旅平台分贝通签约伙伴——某知名药企为例,探讨企业如何通过差旅一体化管理,在全流…

【漫话机器学习系列】027.混淆矩阵(confusion matrix)

混淆矩阵(Confusion Matrix) 混淆矩阵是机器学习中评估分类模型性能的一种工具,特别是在多类别分类问题中。它通过对比模型预测结果和真实标签,帮助我们理解模型的分类效果。 1. 混淆矩阵的结构 混淆矩阵通常是一个二维表格&am…

【AIGC】 ChatGPT实战教程:如何高效撰写学术论文引言

💥 欢迎来到我的博客!很高兴能在这里与您相遇! 首页:GPT-千鑫 – 热爱AI、热爱Python的天选打工人,活到老学到老!!!导航 - 人工智能系列:包含 OpenAI API Key教程, 50个…