MySQL 日期和时间函数知识点总结
引言
在数据库管理和开发中,日期查询是一项基础且频繁使用的功能。MySQL提供了丰富的日期和时间处理函数,使得我们能够灵活地进行日期查询和数据处理。本文将详细介绍MySQL中关于日期查询的几个重要知识点,并附上具体的案例。
1. MySQL的日期时间类型
MySQL支持多种日期时间类型,主要包括 DATETIME、TIMESTAMP、DATE、TIME、YEAR 等。每种类型都有其特定的应用场景和存储格式。
- DATETIME:占用8字节,格式为YYYY-MM-DD HH:MM:SS,日期范围从1000-01-01 00:00:00到9999-12-31 23:59:59。
- TIMESTAMP:占用4字节,格式为YYYY-MM-DD HH:MM:SS,但范围较小,从1970-01-01 00:00:01 UTC到2038年某个时间点。
- DATE:占用3字节,格式为YYYY-MM-DD,范围从1000-01-01到9999-12-31。
- TIME:表示时间(或持续时间),格式为HH:MM:SS。
- YEAR:仅表示年份,格式为YYYY。
- MONTH(): 函数用于从日期中提取月份值,返回一个1到12之间的整数,表示月份。
使用案例
CREATE TABLE orders ( id INT AUTO_INCREMENT PRIMARY KEY, order_date DATETIME, order_amount DECIMAL(10, 2)
); INSERT INTO orders (order_date, order_amount) VALUES ('2023-01-01 12:00:00', 100.00);
2. 日期和时间函数
MySQL提供了大量的日期和时间函数,用于进行日期和时间的计算和格式化。
- CURDATE() 和 CURRENT_DATE:返回当前系统的日期值。
- CURTIME() 和 CURRENT_TIME:返回当前系统的时间值。
- NOW() 和 SYSDATE():返回当前系统的日期和时间值。
- UNIX_TIMESTAMP():返回UNIX时间戳。
- FROM_UNIXTIME():将UNIX时间戳转换为日期时间格式。
- DATE_ADD() 和 ADDDATE():向日期添加指定的时间间隔。
- DATE_SUB() 和 SUBDATE():从日期减去指定的时间间隔。
- DATEDIFF():计算两个日期之间的天数差。
- DATE_FORMAT():将日期格式化为指定的字符串格式。
使用案例
查询今天的所有订单:
SELECT * FROM orders WHERE DATE(order_date) = CURDATE();
查询过去7天内的订单:
SELECT * FROM orders WHERE order_date BETWEEN DATE_SUB(CURDATE(), INTERVAL 7 DAY) AND CURDATE();
DATE_FORMAT() 日期格式化
- 查询订单,并将订单日期格式化为“年-月-日”的格式:
SELECT DATE_FORMAT(order_date, '%Y-%m-%d') AS formatted_order_date
FROM orders;
- 获取当前日期并转换为’%Y%m%dT%H%i%s’,例如 2023-09-14 00:00:00
DATE_FORMAT(CURDATE(), '%Y-%m-%d %H:%i:%s')
- 获取当前日期并转换为 20230921T000000 格式
DATE_FORMAT(CURDATE(), ''%Y%m%dT%H%i%s'')
- 获取当前日期前一周的时间并转换为 ‘%Y%m%dT%H%i%s’ 格式
DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 7 DAY), '%Y-%m-%d %H:%i:%s')
3. 按日期范围查询
在实际应用中,经常需要查询某个日期范围内的数据。这可以通过BETWEEN操作符或者比较操作符(>、<等)来实现。
案例
查询2023年1月份的所有订单:
SELECT * FROM orders WHERE order_date BETWEEN '2023-01-01' AND '2023-01-31';
或者,使用YEAR()和MONTH()函数:
SELECT * FROM orders WHERE YEAR(order_date) = 2023 AND MONTH(order_date) = 1;
4. 特殊日期查询
MySQL还支持查询特定日期,如今天、昨天、本周、本月等的数据。
案例
查询昨天的订单:
SELECT * FROM orders WHERE order_date = DATE_SUB(CURDATE(), INTERVAL 1 DAY);
或者:
SELECT * FROM orders WHERE order_date >= DATE_SUB(CURDATE(), INTERVAL 1 DAY) AND order_date < CURDATE();
查询本月的订单:
SELECT * FROM orders WHERE YEAR(order_date) = YEAR(CURDATE()) AND MONTH(order_date) = MONTH(CURDATE());
或者使用DATE_FORMAT函数:
SELECT * FROM orders WHERE DATE_FORMAT(order_date, '%Y%m') = DATE_FORMAT(CURDATE(), '%Y%m');
5. 时间和时间戳的转换
在处理数据库时,经常需要将时间和时间戳进行转换。MySQL提供了FROM_UNIXTIME()和UNIX_TIMESTAMP()函数来完成这一任务。
案例
将时间戳转换为日期时间格式:
SELECT FROM_UNIXTIME(1672531200);
将日期时间转换为UNIX时间戳:
SELECT UNIX_TIMESTAMP('2023-01-01 12:00:00');
6. 实战案例-生成特定时间范围内的日期列表
MySQL 8.0引入了递归的公用表表达式(CTE),这使得生成日期序列变得更加容易和灵活。
以下 SQL 将生成 ‘2023-01-01’~‘2023-01-10’ 的日期列表:
WITH RECURSIVE date_series AS ( SELECT '2023-01-01' AS date UNION ALL SELECT DATE_ADD(date, INTERVAL 1 DAY) FROM date_series WHERE date < '2023-01-10'
)
SELECT * FROM date_series;
结语
通过本文,我们详细了解了MySQL中关于日期查询的多个知识点,包括日期时间类型、日期和时间函数、按日期范围查询、特殊日期查询以及时间和时间戳的转换。希望这些内容能够帮助你在实际开发中更好地处理日期相关的数据。
相关文章:
MySQL 日期和时间函数知识点总结
引言 在数据库管理和开发中,日期查询是一项基础且频繁使用的功能。MySQL提供了丰富的日期和时间处理函数,使得我们能够灵活地进行日期查询和数据处理。本文将详细介绍MySQL中关于日期查询的几个重要知识点,并附上具体的案例。 1. MySQL的日…...
鸿蒙登录页面及页面跳转的设计
目录 任务目标任务分析任务实施1.新建工程项目HMLogin2.设计登录页面Index.visual3.设计第二个页面SecondPage4.修改Index.ets代码5.修改SecondPage.ets代码6.运行工程 任务目标 设计一个简单的登录页面,要求可以将第一页的登录信息,传递到第二个页面&a…...
【居家养老实训室】:看中医保健在养老中的应用
本文以居家养老实训室为视角,深入探讨了中医保健在养老中的应用。通过对中医保健理念、常用方法以及在居家养老中的具体实践进行分析,阐述了其在改善老年人健康状况、提高生活质量方面的重要作用。同时,也指出了目前应用中存在的问题…...
【区块链+基础设施】区块链服务网络 BSN | FISCO BCOS应用案例
BSN(Blockchain-based Service Network,区块链服务网络)是一个跨云服务、跨门户、跨底层框架,用于部 署和运行各类区块链应用的全球性基础设施网络,旨在为开发者提供低成本和技术互通的区块链一站式服务。 2019 年 12…...
六、快速启动框架:SpringBoot3实战-个人版
六、快速启动框架:SpringBoot3实战 文章目录 六、快速启动框架:SpringBoot3实战一、SpringBoot3介绍1.1 SpringBoot3简介1.2 系统要求1.3 快速入门1.4 入门总结回顾复习 二、SpringBoot3配置文件2.1 统一配置管理概述2.2 属性配置文件使用2.3 YAML配置文…...
SA 注册流程
目录 1. UE开机后按照3GPP TS 38.104定义的Synchronization Raster搜索特定频点 2.UE尝试检测PSS/SSS,取得下行时钟同步,并获取小区的PCI;如果失败则转步骤1搜索下一个频点;否则继续后续步骤; 3.解析Mib,…...
图像的灰度直方图
先来认识一下灰度直方图,灰度直方图是图像灰度级的函数,用来描述每个灰度级在图像矩阵中的像素个数或者占有率。接下来使用程序实现直方图: 首先导入所需的程序包: In [ ]: import cv2 import numpy as np import matplotlib…...
软件测试面试题:Redis的五种数据结构,以及使用的场景是什么?
字符串(Strings):简单直接,就像记事本一样,用来存储和快速访问简单的数据,比如缓存网页或者保存用户会话信息。 列表(Lists):有序的数据集合,适合用来存储按…...
Java后端每日面试题(day1)
目录 JavaWeb三大组件依赖注入的方式Autowire和Resurce有什么区别?Spring Boot的优点Spring IoC是什么?说说Spring Aop的优点Component和Bean的区别自定义注解时使用的RetentionPolicy枚举类有哪些值?如何理解Spring的SPI机制?Spr…...
AI与测试相辅相成
AI助力软件测试 1.AI赋能软件测试 使用AI工具来帮助测试人员提高测试效率,提供缺陷分析和缺陷预测。 语法格式 设定角色 具体指示 上下文格式 例: 角色:你是一个测试人员 内容:请帮我生成登录案例的测试用例 1.只有输入正确账号和密码才…...
搜索+动态规划
刷题刷题刷题刷题 Forgery - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 思路: 需要两个数组,一个数组全部初始化为".",另一个数组输入数据,每碰到一个“.”就进行染色操作,将其周围的…...
strcpy,srtcmp,strlen函数漏洞利用
strcpy,srtcmp,strlen函数漏洞利用 strcpy strcpy函数用于将字符串复制到另一个指针指向的空间中,遇到空字符 **b’x\00’**时停止,: 所以可以利用 strcpy不检查缓冲区 的漏洞(构造的字符串要以\0结尾),…...
SketchUp + Enscape+ HTC Focus3 VR
1. 硬件: 设备连接 2. 软件: 安装steam steamVR Vive Business streaming 3. 操作: 双方登录steam 账号,然后带上头盔,用手柄在HTC Focus3 安装 串流软件,选择串流软件,在Enscape中选择 VR 模式即可 4.最终效果: SketchUp Enscape HTC Focus 3 VR 实时预览_哔哩哔哩_bi…...
推荐3款Windows系统的神级软件,免费、轻量、绝对好用!
DiskView DiskView是一款用于管理和查看磁盘空间的工具,它集成了于微软的Windows操作系统资源管理器中,以显示直观的磁盘空间使用情况。该软件通过生成图形化地图,帮助用户组织和管理大量文件和文件夹,从而高效地管理磁盘空间。用…...
-bash: /snap/bin/docker: 没有那个文件或目录
-bash: /snap/bin/docker: 没有那个文件或目录 解决办法 export PATH$PATH:/usr/bin/docker然后,重新加载配置文件 source ~/.bashrc...
[深度学习]卷积理解
单通道卷积 看这个的可视化就很好理解了 https://github.com/vdumoulin/conv_arithmetic/blob/master/README.md 多通道卷积 当输入有多个通道时,卷积核需要拥有相同的通道数. 假设输入有c个通道,那么卷积核的每个通道分别于相应的输入数据通道进行卷积,然后将得到的特征图对…...
基于aardio web.view2库和python playwright包的内嵌浏览器自动化操作
通过cdp协议可以实现playwright操控webview。 新建Python窗口工程 修改pip.aardio 修改pip.aardio,并执行,安装playwright。 //安装模块 import process.python.pip; //process.python.path "python.exe";/* 安装模块。 参数可以用一个字…...
《数据仓库与数据挖掘》 总复习
试卷组成 第一章图 第二章图 第三章图 第四章图 第五章图 第六章图 第九章图 第一章 DW与DM概述 (特点、特性) DB到DW 主要特征 (1)数据太多,信息贫乏(Data Rich, Information Poor)。 &a…...
EtherCAT主站IGH-- 8 -- IGH之domain.h/c文件解析
EtherCAT主站IGH-- 8 -- IGH之domain.h/c文件解析 0 预览一 该文件功能`domain.c` 文件功能函数预览二 函数功能介绍1. `ec_domain_init`2. `ec_domain_clear`3. `ec_domain_add_fmmu_config`4. `ec_domain_add_datagram_pair`5. `ec_domain_finish`6. `ecrt_domain_reg_pdo_en…...
《昇思25天学习打卡营第10天|使用静态图加速》
文章目录 今日所学:一、背景介绍1. 动态图模式2. 静态图模式 三、静态图模式的使用场景四、静态图模式开启方式1. 基于装饰器的开启方式2. 基于context的开启方式 总结: 今日所学: 在上一集中,我学习了保存与加载的方法ÿ…...
【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
基于当前项目通过npm包形式暴露公共组件
1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...
优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...
Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...
「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案
在移动互联网营销竞争白热化的当下,推客小程序系统凭借其裂变传播、精准营销等特性,成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径,助力开发者打造具有市场竞争力的营销工具。 一、系统核心功能架构&…...
comfyui 工作流中 图生视频 如何增加视频的长度到5秒
comfyUI 工作流怎么可以生成更长的视频。除了硬件显存要求之外还有别的方法吗? 在ComfyUI中实现图生视频并延长到5秒,需要结合多个扩展和技巧。以下是完整解决方案: 核心工作流配置(24fps下5秒120帧) #mermaid-svg-yP…...
