Mysql SQL 超实用的7个日期算术运算实例(10k)
文章目录
- 前言
- 1. 加上或减去若干天、若干月或若干年
- 基本语法
- 使用场景
- 注意事项
- 运用实例
- 分析说明
- 2. 确定两个日期相差多少天
- 基本语法
- 使用场景
- 注意事项
- 运用实例
- 分析说明
- 3. 确定两个日期之间有多少个工作日
- 基本语法
- 使用场景
- 注意事项
- 运用实例
- 分析说明
- 4. 确定两个日期相隔多少个月或多少年
- 基本语法
- 使用场景
- 注意事项
- 运用实例
- 分析说明
- 5. 确定两个日期相隔多少秒、多少分钟或多少小时
- 基本语法
- 使用场景
- 注意事项
- 运用实例
- 分析说明
- 6. 确定两个日期相隔多少秒、多少分钟或多少小时
- 基本语法
- 使用场景
- 注意事项
- 运用实例
- 分析说明
- 7. 确定当前记录和下一条记录存储的日期相隔多少天
- 基本语法
- 使用场景
- 注意事项
- 运用实例
- 分析说明
- 总结
前言
在MySQL中,可以使用各种函数来执行日期和时间的算术运算。以下是常用的日期算术运算函数:
- DATE_ADD() 和 DATE_SUB():在日期上加上或减去指定的时间间隔。
- TIMESTAMPDIFF():计算两个日期之间的差异,以指定的时间单位返回。
- DATEDIFF():计算两个日期之间的天数差异。
- DAYOFWEEK():确定一个日期是星期几,用于计算工作日。
- UNIX_TIMESTAMP():将日期转换为Unix时间戳,用于计算秒数差异。
1. 加上或减去若干天、若干月或若干年
基本语法
在MySQL中,可以使用DATE_ADD()
和DATE_SUB()
函数来对日期进行算术运算。
-
加上若干天、月或年:
DATE_ADD(date, INTERVAL value unit);
date
:原始日期。value
:要加上的天数、月数或年数。unit
:时间单位,可以是DAY
、MONTH
或YEAR
。
-
减去若干天、月或年:
DATE_SUB(date, INTERVAL value unit);
date
:原始日期。value
:要减去的天数、月数或年数。unit
:时间单位,可以是DAY
、MONTH
或YEAR
。
使用场景
- 日期调整:计算未来的日期或过去的日期,如计算项目的开始日期或结束日期。
- 年龄计算:根据出生日期计算年龄。
- 到期日计算:计算账单或订阅的到期日。
注意事项
- 闰年:在加上或减去年时,需要注意闰年的影响,特别是当涉及到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-01
到2023-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. 钱没了!会…...

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

cut-命令详解
一、命令 1.cut列截取命令 cut命令的默认分隔符是制表符 2.参数: -f 列号 #提取第几列-d 分隔符 #按照指定分隔符分割列-c 字符范围 #不依赖分隔符来区分列,而是通过字符范围(行首为0)来进行字段提取。“n-”表…...

Apache MINA 反序列化漏洞CVE-2024-52046
漏洞描述: Apache MINA 是一个功能强大、灵活且高性能的网络应用框架。它通过抽象网络层的复杂性,提供了事件驱动架构和灵活的 Filter 链机制,使得开发者可以更容易地开发各种类型的网络应用。 Apache MINA 框架的 ObjectSerializationDeco…...

二、AI知识(神经网络)
二、AI知识(神经网络) 1.常用算法 FNN CNN RNN LSTM DNN GRU 2.深度学习中概念及算法 1. 感知机 感知机(Perceptron)是一种最早的人工神经网络模型之一,通常用来解决二分类问题。它由弗兰克罗森布拉特&#…...

node.js之---子线程(child_process)模块
为什么需要子线程(child_process)模块 Worker Threads 的基本概念 如何使用 Worker Threads Worker Threads 的性能 Worker 线程的优势和限制 进阶用法:共享内存 为什么需要子线程(child_process)模块 在 Node.js…...

Json字符串解析失败
通过第三方服务,拿到响应体的data对象(拿到的时候对象是有值的) 通过JSON.parseObject方法,拿到的对象,值为null 通过查看对应的json字符串,发现命名不一样... JSONField SeriealizedName注解是用来解析j…...

LeetCode算法题——螺旋矩阵ll
题目描述 给你一个正整数n,生成一个包含1到n2所有元素,且元素按顺时针顺序螺旋排列的n x n正方形矩阵matrix 。 示例 输入:n 3 输出:[[1,2,3],[8,9,4],[7,6,5]]题解 思路: 将整个过程分解为逐圈填充的过程…...

【开源社区openEuler实践】hpcrunner
title: 探索 Hpcrunner:高性能计算的得力助手 date: ‘2024-12-31’ category: blog tags: Hpcrunner高性能计算任务调度资源优化 sig: HPC archives: ‘2024-12’ author:way_back summary: Hpcrunner 作为高性能计算领域的一款实用工具,专注于优化任务…...

linux下安装达梦数据库v8详解
目录 操作系统、数据库 1、下载达梦数据库 2、安装前准备 2.1、建立数据库用户和组 2.2、修改文件打开最大数 2.3、挂载镜像 2.4、新建安装目录 3、数据库安装 4、配置环境变量 5、初始化数据库实例 6、注册服务 7、使用数据库 8、卸载数据库 9、多实例管理 10、…...

Redis的常用命令
Redis中文字典网站 redis 命令手册https://redis.com.cn/commands.html Keys * 查看当前库所有的key exists ke 判断某个key是否存在 type key查看你的key是什么类型 Del key删除执行的key数据 unlink key非阻塞删除,仅仅将keys从keyspace元数据中删除…...

Docker入门常用命令总结
1.从远程仓库拉取一个纯净的镜像 docker pull docker .io/centos 2.创建并进入容器(左外右内) docker run --name xxx -dit 镜像id(镜像名称:Tag) /bin/bash 【参数必须放在镜像ID之前】 -i 让Docker分配一个伪终端,并…...