SQL:MySQL函数:日期函数(Date Functions)
目录
时间是数据的一种类型
🧰 MySQL 常用时间函数大全
🟦 1. 获取当前时间/日期
🟦 2. 日期运算(加减)
🟦 3. 时间差计算
🟦 4. 格式化日期
🟦 5. 提取时间部分
🟦 6. 时间戳相关
函数之间的联系
时间是数据的一种类型
我们用 MySQL 存储时间,其实和存储数字、字符串一样,时间是 一类特殊的数据类型(DATE
/ DATETIME
/ TIMESTAMP
)。
所以我们要处理它,比如:
-
现在是什么时间?(取值)
-
某个时间加上 3 天是多少?(运算)
-
两个时间差多少?(对比)
-
显示成“年-月-日”?(格式化)
于是我们需要一类“时间函数工具箱”来完成这些任务。
🧰 MySQL 常用时间函数大全
🟦 1. 获取当前时间/日期
函数名 | 中文含义 | 示例 | 返回 |
---|---|---|---|
NOW() | 当前日期和时间 | SELECT NOW(); | 2025-05-08 20:21:00 |
CURDATE() | 当前日期(不包括时间) | SELECT CURDATE(); | 2025-05-08 |
CURTIME() | 当前时间(不包括日期) | SELECT CURTIME(); | 20:21:00 |
适用场景:记录操作时间、筛选“今天”的数据、判断是否超期。
🟦 2. 日期运算(加减)
函数名 | 中文含义 | 示例 | 返回 |
---|---|---|---|
DATE_ADD(d, INTERVAL n unit) | 某日期加上时间间隔 | DATE_ADD('2024-01-01', INTERVAL 3 DAY) | 2024-01-04 |
DATE_SUB(d, INTERVAL n unit) | 某日期减去时间间隔 | DATE_SUB('2024-01-10', INTERVAL 1 MONTH) | 2023-12-10 |
-
unit
可以是DAY
,MONTH
,YEAR
,HOUR
,MINUTE
等。
适用场景:查“过去 7 天”/“近 1 个月”的记录。
DATE_ADD(date, INTERVAL expr unit)
-
功能:给日期加上指定的时间间隔。
-
语法:
SELECT DATE_ADD('2025-05-13', INTERVAL 10 DAY); -- 加10天
DATE_SUB(date, INTERVAL expr unit)
-
功能:从日期中减去时间间隔。
-
语法:
SELECT DATE_SUB('2025-05-13', INTERVAL 1 MONTH); -- 减1个月
🟦 3. 时间差计算
函数名 | 中文含义 | 示例 | 返回 |
---|---|---|---|
DATEDIFF(d1, d2) | d1 - d2 相差多少天(整数) | DATEDIFF('2025-05-10', '2025-05-01') | 9 |
TIMESTAMPDIFF(unit, d1, d2) | 相差多少单位(更灵活) | TIMESTAMPDIFF(MONTH, '2023-01-01', '2025-05-01') | 28 |
-
unit
也可以是SECOND
,MINUTE
,HOUR
,DAY
,MONTH
,YEAR
适用场景:计算会员时长、距离到期还有几天、是否超时。
DATEDIFF(date1, date2)
-
功能:计算两个日期之间的天数差值(date1 - date2)。
-
语法:
SELECT DATEDIFF('2025-05-13', '2025-05-01'); -- 返回 12
TIMESTAMPDIFF(unit, datetime1, datetime2)
-
功能:计算两个时间之间的差值,可指定单位(
SECOND
,MINUTE
,HOUR
,DAY
,MONTH
,YEAR
)。 -
语法:
SELECT TIMESTAMPDIFF(DAY, '2025-05-01', '2025-05-13'); -- 返回 12
🟦 4. 格式化日期
函数名 | 中文含义 | 示例 | 返回 |
---|---|---|---|
DATE_FORMAT(d, format) | 格式化时间 | DATE_FORMAT(NOW(), '%Y-%m-%d') | 2025-05-08 |
适用场景:前端展示、日志格式化、分组查询(比如按月统计)。
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s');
常用格式符号:
符号 | 含义 |
---|---|
%Y | 四位数年份(2025) |
%y | 两位数年份(25) |
%m | 月份(01–12) |
%d | 日期(01–31) |
%H | 小时(00–23) |
%i | 分钟(00–59) |
%s | 秒(00–59) |
🟦 5. 提取时间部分
函数名 | 中文含义 | 示例 | 返回 |
---|---|---|---|
YEAR(d) | 提取年份 | YEAR(NOW()) | 2025 |
MONTH(d) | 提取月份 | MONTH('2024-08-15') | 8 |
DAY(d) | 提取日期 | DAY('2025-05-08') | 8 |
HOUR(d) | 小时 | HOUR('20:15:00') | 20 |
适用场景:按年月日分组、按小时分布分析。
YEAR(date)
-
功能:提取年份。
-
语法:
SELECT YEAR('2025-05-13'); -- 返回 2025
DAY(date)
或 DAYOFMONTH(date)
-
功能:提取日期中的“日”部分。
-
语法:
SELECT DAY('2025-05-13'); -- 返回 13
HOUR(time)
/ MINUTE(time)
/ SECOND(time)
-
功能:提取时间的时、分、秒。
-
示例:
SELECT HOUR('14:32:10'); -- 返回 14
SELECT MINUTE('14:32:10'); -- 返回 32
SELECT SECOND('14:32:10'); -- 返回 10
🟦 6. 时间戳相关
时间戳(Timestamp)是指从一个特定的起点时间开始所经过的总秒数,通常用于表示某个时刻。它是计算机中一种常见的时间表示方式,可以精确、方便地进行时间计算和排序。
-
Unix时间戳(Unix Timestamp):是自1970年1月1日 00:00:00 UTC以来所经过的总秒数。
-
它是一个整数(精确到秒),例如:
1715601130
表示的是 2025年5月13日 13:32:10(UTC) 左右。
时间戳的特点
特性 | 描述 |
---|---|
精度高 | 精确到秒(也可毫秒、微秒) |
易于比较 | 时间戳是整数,直接比较大小即可判断前后 |
跨平台通用 | 适用于大多数编程语言和数据库 |
不含时区信息 | 默认以UTC计算,需要转换为本地时间 |
UNIX_TIMESTAMP()
-
功能:获取当前时间的 Unix 时间戳(单位:秒)
-
示例:
SELECT UNIX_TIMESTAMP();
-- 返回:1715601130
FROM_UNIXTIME(timestamp)
-
功能:将 Unix 时间戳转为可读的日期时间
-
示例:
SELECT FROM_UNIXTIME(1715601130);
-- 返回:2025-05-13 13:32:10
UNIX_TIMESTAMP(date)
-
功能:将一个标准时间转为 Unix 时间戳
-
示例:
SELECT UNIX_TIMESTAMP('2025-05-13 13:32:10');
-- 返回:1715601130
函数之间的联系
可以把它们看成一个工具链:
[当前时间] [日期格式化]NOW() CURDATE() ───> DATE_FORMAT()↓ ↑DATE_ADD() TIMESTAMPDIFF()DATE_SUB() DATEDIFF()↓ ↑生成目标时间 计算时间差↓ ↑YEAR(), MONTH(), DAY() ←────提取某部分
示例:
-- 查询本月注册的用户
SELECT * FROM users
WHERE DATE_FORMAT(created_at, '%Y-%m') = DATE_FORMAT(CURDATE(), '%Y-%m');-- 计算某订单创建以来已过天数
SELECT DATEDIFF(NOW(), order_created_at) AS days_elapsed
FROM orders;-- 添加30天后的到期时间
SELECT DATE_ADD(created_at, INTERVAL 30 DAY) AS expiry_date
FROM users;
相关文章:
SQL:MySQL函数:日期函数(Date Functions)
目录 时间是数据的一种类型 🧰 MySQL 常用时间函数大全 🟦 1. 获取当前时间/日期 🟦 2. 日期运算(加减) 🟦 3. 时间差计算 🟦 4. 格式化日期 🟦 5. 提取时间部分 Ƿ…...

内存 -- Linux内核内存分配机制
内存可以怎么用? kmalloc:内核最常用,用于频繁使用的小内存申请 alloc_pages:以页框为单位申请,物理内存连续 vmalloc:虚拟地址连续的内存块,物理地址不连线 dma_alloc_coherent:常…...

关于读写锁的一些理解
同一线程的两种情况: 读读: public static void main(String[] args) throws InterruptedException {ReentrantReadWriteLock lock new ReentrantReadWriteLock();Lock readLock lock.readLock();Lock writeLock lock.writeLock();readLock.lock();S…...

C++修炼:模板进阶
Hello大家好!很高兴我们又见面啦!给生活添点passion,开始今天的编程之路! 我的博客:<但凡. 我的专栏:《编程之路》、《数据结构与算法之美》、《题海拾贝》、《C修炼之路》 欢迎点赞,关注&am…...

android-ndk开发(10): use of undeclared identifier ‘pthread_getname_np‘
1. 报错描述 使用 pthread 获取线程名字, 用到 pthread_getname_np 函数。 交叉编译到 Android NDK 时链接报错 test_pthread.cpp:19:5: error: use of undeclared identifier pthread_getname_np19 | pthread_getname_np(thread_id, thread_name, sizeof(thr…...

UI自动化测试框架:PO 模式+数据驱动
🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 1. PO 设计模式简介 什么是 PO 模式? PO(PageObject)设计模式将某个页面的所有元素对象定位和对元素对象的操作封装成…...
大小端的判断方法
大小端(Endianness) 是计算机存储多字节数据(如整数、浮点数)时的两种不同方式,决定了字节在内存中的排列顺序。 1. 大端(Big-Endian) 高位字节存储在低地址,低位字节存储在高地址。…...

Java笔记4
第一章 static关键字 2.1 概述 以前我们定义过如下类: public class Student {// 成员变量public String name;public char sex; // 男 女public int age;// 无参数构造方法public Student() {}// 有参数构造方法public Student(String a) {} }我们已经知道面向…...
DAY22kaggle泰坦尼克号
参考了机器学习实战进阶:泰坦尼克号乘客获救预测_天池notebook-阿里云天池 数据处理省略 直接上模型 5.12.1 一些数据的正则化 这里我们将Age和fare进行正则化: from sklearn import preprocessing scale_age_fare preprocessing.StandardScaler().…...

2025年渗透测试面试题总结-渗透测试红队面试八(题目+回答)
网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 渗透测试红队面试八 二百一十一、常见中间件解析漏洞利用方式 二百一十二、MySQL用户密码存储与加密 …...

MiniMind:3块钱成本 + 2小时!训练自己的0.02B的大模型。minimind源码解读、MOE架构
大家好,我是此林。 目录 1. 前言 2. minimind模型源码解读 1. MiniMind Config部分 1.1. 基础参数 1.2. MOE配置 2. MiniMind Model 部分 2.1. MiniMindForCausalLM: 用于语言建模任务 2.2. 主干模型 MiniMindModel 2.3. MiniMindBlock: 模型的基本构建块…...

如何进行前端性能测试?--性能标准
如何进行前端性能测试?–性能标准 前端性能测试指标: 首次加载阶段 场景:用户首次访问网页,在页面还未完全呈现各种内容和功能时的体验。重要指标及原因 首次内容绘制(FCP - First Contentful Paint)…...

通信网络编程——JAVA
1.计算机网络 IP 定义与作用 :IP 地址是在网络中用于标识设备的数字标签,它允许网络中的设备之间相互定位和通信。每一个设备在特定网络环境下都有一个唯一的 IP 地址,以此来确定其在网络中的位置。 分类 :常见的 IP 地址分为 I…...

Off-Policy策略演员评论家算法SAC详解:python从零实现
引言 软演员评论家(SAC)是一种最先进的Off-Policy策略演员评论家算法,专为连续动作空间设计。它在 DDPG、TD3 的基础上进行了显著改进,并引入了最大熵强化学习的原则。其目标是学习一种策略,不仅最大化预期累积奖励&a…...

热门CPS联盟小程序聚合平台与CPA推广系统开发搭建:助力流量变现与用户增长
一、行业趋势:CPS与CPA模式成流量变现核心 在移动互联网流量红利见顶的背景下,CPS(按销售付费)和CPA(按行为付费)模式因其精准的投放效果和可控的成本,成为企业拉新与用户增长的核心工具。 CPS…...
(自用)Java学习-5.9(Thymeleaf,自动装配,自定义启动器 )
一、Thymeleaf 模板技术 片段定义与复用 <!-- 声明片段 --> <div th:fragment"b1">...</div> <!-- 插入片段 --> <div th:insert"~{bottom :: b1}"></div> <!-- 追加内容 --> <div th:replace"~{botto…...

Linux系统管理与编程15:vscode与Linux连接进行shell开发
兰生幽谷,不为莫服而不芳; 君子行义,不为莫知而止休。 【1】打开vscode 【2】点击左下角连接图标 【3】输入远程连接 选择合适的操作系统 输入密码,就进入Linux环境的shell编程了。 在vscode下面粘贴拷贝更方便。比如 然后在v…...

RabbitMQ概念详解
什么是消息队列? 消息队列是一种在应用程序之间传递消息的技术。它提供了一种异步通信模式,允许应用程序在不同的时间处理消 息。消息队列通常用于解耦应用程序,以便它们可以独立地扩展和修改。在消息队列中,消息发送者将消息发送…...
Excel-to-JSON插件专业版功能详解:让Excel数据转换更灵活
前言 在数据处理和系统集成过程中,Excel和JSON格式的转换是一个常见需求。Excel-to-JSON插件提供了一套强大的专业版功能,能够满足各种复杂的数据转换场景。本文将详细介绍这些专业版功能的应用场景和使用方法。 订阅说明 在介绍具体功能之前…...

linux基础操作5------(shell)
一.前言 本文来介绍一下linux的shell,除了最后的那个快捷键,其他的还是做一个了解就行了。 Shell: 蛋壳的意思,是linux中比较重要的一个概念,所有的命令其实都称之为shell命令。 看图解:shell就是内核的一…...

BUUCTF 大流量分析(三) 1
BUUCTF:https://buuoj.cn/challenges 文章目录 题目描述:密文:解题思路:flag: 相关阅读 CTF Wiki BUUCTF | 大流量分析 (一)(二)(三) 题目描述: …...
feign.RequestInterceptor 简介-笔记
1. feign.RequestInterceptor 简介 Feign 是一个声明式 Web 服务客户端,用于简化 HTTP 请求的编写与管理。feign.RequestInterceptor 是 Feign 提供的一个接口,用于在请求发出之前对其进行拦截和修改。这在微服务架构中非常有用,比如在请求中…...

vLLM中paged attention算子分析
简要分析vLLM中PA的代码架构和v1与v2的区别 vLLM版本:0.8.4 整体结构分析 首先从torch_bindings.cpp入手分析: 这里可以看到vLLM向pytorch中注册了两个PA算子:v1和v2 其中paged_attention_v1和paged_attention_v2分别实现在csrc/attentio…...

多样本整合Banksy空间聚类分析(Visium HD, Xenium, CosMx)
在空间数据分析中,传统的单细胞聚类算法,例如Seurat和Scanpy中的lovain和leiden等聚类算法,通常在处理空间数据时忽略了空间信息。然而,由于细胞状态受其周围细胞的影响,将转录组数据与细胞的空间信息结合起来进行聚类…...
C++:公有,保护及私有继承
从已有的类派生出新的类,而派生类继承了原有类的特征被称为类继承。下面按照访问权限分别介绍公有继承,私有继承与保护继承。 公有继承 使用公有继承,基类的公有成员将成为派生类的公有成员(派生类对象可直接调用方法)…...
ElasticSearch聚合操作案例
1、根据color分组统计销售数量 只执行聚合分组,不做复杂的聚合统计。在ES中最基础的聚合为terms,相当于 SQL中的count。 在ES中默认为分组数据做排序,使用的是doc_count数据执行降序排列。可以使用 _key元数据,根据分组后的字段数…...

使用 OAuth 2.0 保护 REST API
使用 OAuth 2.0 保护 REST API 使用 OAuth 2.0 保护 REST API1.1 不安全的api1.2 安全默认值安全默认值Spring Security 默认值 需要对所有请求进行身份验证Servlet、过滤器和调度程序安全优势 使用所有请求的安全标头进行响应缓存标头 严格传输安全标头内容类型选项需要对所有…...

解决下拉框数据提交后回显名称不对
问题背景描述 页面组件使用 antd 的 Select 组件,下拉框的 options 数据是动态获取的,基本就是有value 和 label 属性的对象数组。 提交数据后,我们有一个保存草稿的操作,支持返回或者刷新页面,浏览其他页面之后通过其…...

lenis滑动插件的笔记
官网 lenis - npm 方法一:基础判断(推荐) 通过 Lenis 自带的 scroll 和 limit 属性直接判断: const lenis new Lenis()// 滚动事件监听 lenis.on(scroll, ({ scroll, limit }) > {const distanceToBottom limit - scroll…...
基于Python的高效批量处理Splunk Session ID并写入MySQL的解决方案
已经用Python实现对Splunk通过session id获取查询数据,现在要实现Python批量数据获取,通过一个列表中的大量Session ID,快速高效地获取一个数据表,考虑异常处理,多线程和异步操作以提高性能,同时将数据表写…...