SQL 日期函数

在数据库中,日期和时间是经常需要处理的数据类型之一。SQL提供了许多内置的日期函数,用于对日期和时间进行操作、计算和比较。这些函数可以帮助我们提取日期的各个部分(如年份、月份、日、小时、分钟等),执行日期的转换和格式化,以及计算日期之间的差值。 


获取当前时间

可以使用 NOW() 、 CURDATE()、CURTIME() 获取当前时间或 CURRENT_TIMESTAMP()、CURRENT_DATE()、CURRENT_TIME() ,这两组函数在对应功能上相同,但在具体应用和某些特性上存在一定差异。

🍁CURRENT_TIMESTAMP() / NOW()

返回当前日期和时间。格式:YYYY-MM-DD hh:mm:ss

mysql> SELECT NOW() AS `current_datetime`;
+-------------------------+
| current_datetime        |
+-------------------------+
| 2025-03-31 15:31:49.091 |
+-------------------------+

 🍁CURRENT_DATE() /  CURDATE()

返回日期,不包括时间。格式:YYYY-MM-DD

mysql> SELECT CURDATE() AS `current_date`;
+--------------+
| current_date |
+--------------+
| 2025-03-25   | 
+--------------+

 🍁CURRENT_TIME() / CURTIME()

返回当前时间,不包括日期。格式:hh:mm:ss

mysql> SELECT CURTIME() AS `current_time`;
+--------------+
| current_time |
+--------------+
| 16:16:30     |
+--------------+

🔔

在使用 NOW() 和 CURTIME() 时,如果要精确的秒以后的时间的话,可以在()中加数字,加多少,就表示精确到秒后多少位

比如 NOW(3) 就是精确到毫秒,表示为: 2025-03-31 15:27:20.645


提取时间

🍀DATE()

返回日期/时间值的日期部分。

示例:

mysql> SELECT DATE('2025-11-14 16:48:23') AS `date`;
+------------+
| date       |
+------------+
| 2025-11-14 |
+------------+

 🍀TIME()

返回日期/时间值的时间部分。

示例:

mysql> SELECT TIME('2025-11-14 16:48:23') AS `time`;
+----------+
| time     |
+----------+
| 16:48:23 |
+----------+

🍀提取各部分时间的函数 

函数作用
YEAR()返回一个日期/时间值的年份
MONTH()返回一个日期/时间值的月份
DAY()返回一个日期/时间值的日
HOUR()返回一个日期/时间值的小时
MINUTE()返回一个日期/时间值的分钟
SECOND()返回一个日期/时间值的秒数

 

示例:

mysql> SELECT YEAR('2025-11-14 16:48:23') AS `year`;
+------+
| year |
+------+
| 2025 |
+------+

🍀EXTRACT() 

EXTRACT() 函数用于返回日期/时间的单独部分,如 YEAR (年)、MONTH (月)、DAY (日)、HOUR (小时)、MINUTE (分钟)、 SECOND (秒)。

语法

EXTRACT(unit FROM date)

其中:

  • table 是表格名
  • date 参数是合法的日期表达式。
  • unit 参数是需要返回的时间部分,如 YEAR 、MONTH 、 DAY 、 HOUR 、MINUTE 、SECOND 等。

示例: 

mysql> SELECT EXTRACT(MONTH FROM '2025-11-14 16:45:41') AS `month`;
+-------+
| month |
+-------+
| 11    |
+-------+

🔔在一般情况下,EXTRACT(unit FROM date) 与 unit() 的结果相同。


格式化日期

🍂DATE_FORMAT()

该函数用于将日期或时间值按照指定的格式进行格式化。

语法

DATE_FORMAT(date,format);

其中:

  • date 是要格式化的日期或时间值。
  • format 是指定的格式字符串。

格式字符串:

年份
%Y表示四位数的年份。
%y表示两位数的年份,如2023为23。
月份
%M表示英文形式的月份,如11月为November。
%m表示数字形式的月份。
日期
%D表示英文形式的日期,如1st、14th等。
%d表示数字形式的日期。
小时
%H表示24小时制的小时。
%h / %I表示12小时制的小时,如16为04。
分钟
%i表示分钟。
秒钟
%S / %s表示秒数。(MySQL里%S / %s是具有相同含义的)
星期
%W表示星期的英文全称,如星期二为Tuesday。
%w表示星期的数字形式,如星期日为0,星期一为1,以此类推。
%a表示星期的英文缩写,如星期二为Tue。

​​​​​​​

示例:

mysql> SELECT DATE_FORMAT('2025-11-14 19:23:13', '%Y %m') AS `date_format`
+-------------+
| date_format |
+-------------+
| 2025 11     |
+-------------+

增/减时间

🍃DATE_ADD() / DATE_SUB()

DATE_ADD用于向日期或时间添加指定的时间间隔,DATE_SUB用于从日期或时间减去指定的时间间隔。

语法

DATE_ADD/DATE_SUB(date, INTERVAL value unit)

其中,

  • date是要操作的日期或时间;
  • value是要添加(减去)的时间值;
  • unit是时间单位,可以是DAY、MONTH、YEAR等,也可以是HOUR、MINUTE、SECOND等。

示例:

向日期添加1天

mysql> SELECT DATE_ADD('2025-11-14 19:33:13', INTERVAL 1 DAY) AS `date_add`
+---------------------+
| date_add            |
+---------------------+
| 2025-11-15 19:33:13 |
+---------------------+

🔔

ADDDATE()与DATE_ADD()功能相同,SUBDATE()与DATE_SUB()功能相同,但它们在某些数据库中可能不支持。


🍃ADDTIME() / SUBTIME()

ADDTIME()用于向时间添加指定的时间间隔,SUBTIME()用于从时间减去指定的时间间隔。

语法

ADDTIME/SUBTIME(time, 'value unit')

 其中,

  • time是要操作的时间;
  • value是要添加(减去)的时间值;
  • unit是时间单位,可以是HOUR、MINUTE、SECOND等。

示例:

mysql> SELECT DATE_ADD('2025-11-14 19:33:13', '1 hour') AS `subtime`
+---------------------+
| subtime             |
+---------------------+
| 2025-11-14 18:33:13 |
+---------------------+

🍃TIMESTAMPADD()

用于向时间戳添加指定的时间间隔。

语法

TIMESTAMPADD(unit, value, timestamp)

其中, 

  • unit:表示要添加的时间单位,如 DAY、MONTH、YEAR 等。
  • value:表示要添加的时间值,可以是整数或小数。
  • timestamp:表示要操作的时间戳。

示例: 

向日期减去3天

mysql> SELECT TIMESTAMPDAA('2025-11-14 19:33:13', DAY, -3) AS `timestampadd`
+---------------------+
| timestampadd        |
+---------------------+
| 2025-11-11 18:33:13 |
+---------------------+

计算日期差

🌼DATEDIFF()

计算两个日期之间的天数差。

语法

DATEDIFF(end_date, start_date)

其中, 

  • start_date:表示起始日期。
  • end_date:表示结束日期。

🌼TIMESTAMPDIFF()

计算两个日期或时间戳之间的差值。

TIMESTAMPDIFF(unit, start_time, end_time)

其中,

  • unit是时间单位,可以是DAY、MONTH、YEAR等;
  • start_date:表示起始日期。
  • end_date:表示结束日期。

示例:

mysql> SELECT TIMESTAMPDIFF(MONTH, '2025-08-14', '2025-11-14') AS `timestampdiff`
+---------------+
| timestampdiff |
+---------------+
| 3             |
+---------------+
 # 结束日小于起始日时
-> SELECT TIMESTAMPDIFF(MONTH, '2025-08-15', '2025-11-14') AS `timestampdiff`
+---------------+
| timestampdiff |
+---------------+
| 2             |
+---------------+

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

(五)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB

一、七种算法(DBO、LO、SWO、COA、LSO、KOA、GRO)简介 1、蜣螂优化算法DBO 蜣螂优化算法(Dung beetle optimizer,DBO)由Jiankai Xue和Bo Shen于2022年提出,该算法主要受蜣螂的滚球、跳舞、觅食、偷窃和繁…

基于自私羊群算法优化概率神经网络PNN的分类预测 - 附代码

基于自私羊群算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于自私羊群算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于自私羊群优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神…

No209.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

软件工程-第7章 面向对象方法基础

第7章 面向对象方法基础 面向对象的基本概念 面向对象方法的世界观:一切系统都是由对象构成的,他们的相互作用、相互影响,构成了大千世界的各式各样系统。面向对象方法是一种以对象、对象关系等来构造软件系统模型的系统化方法。 面向对象 …

Maven介绍及配置

目录 一.Maven 1.介绍 坐标 仓库 1)中央仓库 2)本地仓库 3)私服 配置国内源 配置过程 二.Maven功能 2.项目构建 3.依赖管理 Maven Help插件 安装 ​使用 一.Maven 1.介绍 坐标 唯一的,通过以下代码的三个键值对确…

SARAS多步TD目标算法

SARAS多步TD目标算法 代码仓库:https://github.com/daiyizheng/DL/tree/master/09-rl SARSA算法是on-policy 时序差分 在迭代的时候,我们基于 ϵ \epsilon ϵ-贪婪法在当前状态 S t S_t St​ 选择一个动作 A t A_t At​ ,然后会进入到下一个状态 S…

mp4视频批量截取!!!

mp4视频批量截取!!! 问题:如果我们想截取一个mp4视频中的多个片段,一个一个截会很麻烦! 可以将想要截取的开始时间和结束时间保存到 excel表 中,进行批量截取。 1、对一个视频,记…

HarmonyOS元服务实现今天吃什么

一、前言 作为一个职业打工人,每天点外卖吃啥东西都有选择综合症,突发奇想让程序帮我们随机选择一个吃的,是不是可以解决我们的选择问题呢,说干就干,我们就使用HarmonyOS元服务实现一下这个功能。为什么选择这个Harmon…

java程序中为什么经常使用tomcat

该疑问的产生场景: 原来接触的ssm项目需要在项目配置中设置tomcat,至于为什么要设置tomcat不清楚,只了解需要配置tomcat后项目才能启动。接触的springboot在项目配置中不需要配置tomcat,原因是springboot框架内置了tomcat&#xf…

万界星空科技云MES生产管理系统和ERP的对接

万界星空云MES管理系统的应用比较广,在和ERP连接时,必须先掌握下什么模块是和MES业务流程有关的。在ERP诸多模块中,有MM(物料管理方法模块)、PP(生产计划模块)、QM(质量控制模块)模块和MES有同时的关联,因此,这种模块造…

spring cloud之网关

Gateway网关(*) 什么是网关 # 1.说明 - 网关统一服务入口,可方便实现对平台众多服务接口进行管控。 - 网关 路由转发 过滤器路由转发:接收一切外界请求,转发到后端的微服务上去过滤器:在服务网关中可以完成一系列的横切功能&a…

信号发生器为什么输出信号和配置参数对不上?

1.问题: 今天在调试时遇到信号发生器输出信号与我实际输入的参数不符的问题。 我原本打算输出一个中心点是2.5V然后上下偏移1.5V的信号。刚操作信号发生器的时候,调节到正弦波输出,参数部分,必须要输入High,Low电平。这个很不方…

Linux使用Docker完整安装Superset,同时解决please use superset_config.py to override it报错

文章目录 Docker安装Superset流程1. 首先获取镜像2. 生成SSL3. 创建Superset容器4. 更新数据库5. 测试访问Superset Docker安装Superset流程 1. 首先获取镜像 docker pull amancevice/superset2. 生成SSL 接下来我们运行一些额外的程序: openssl rand -base64 4…

龙讯旷腾PWmat:新的催化反应机理——瞬态相变,对多相电催化剂的设计和多相电催化机理的研究具有重要意义

研究背景 众所周知,材料的性质,包括催化活性都是相敏感的。而材料的相与外界条件有关,电催化反应过程中的外部条件与反应前后的外部条件不同,这自然导致了一个问题:在反应过程中电催化剂的相是否可以与反应前后的相不…

基于萤火虫算法优化概率神经网络PNN的分类预测 - 附代码

基于萤火虫算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于萤火虫算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于萤火虫优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神经网络…

demo(一)eureka----服务注册与提供

下面写一个简单的demo验证下eureka&#xff0c;实现服务注册、服务发现。 一、单节点&#xff1a; 1、api&#xff1a; 封装其他组件需要共用的dto 2、eureka-service服务注册中心&#xff1a; &#xff08;1&#xff09;pom: <?xml version"1.0" encoding&q…

Anaconda当前有几个python环境,Anaconda常用命令

通过下面的命令即可知道当前的conda拥有几个python版本环境。 conda env list常用命令 python版本 python --version or python --V当前conda可以使用那些python版本 conda search "^python$"创建一个新的python版本环境&#xff0c;例如python版本是3.8.3 cond…

问题 G: Girls and Boys(最大独立集)

由于未知编号对应性别&#xff0c;故进行两次作图 详细看下图&#xff0c; 该图为转载&#xff1a; AC代码&#xff08;较转载代码修改过&#xff0c;源代码无法AC&#xff09;&#xff1a; #include<iostream> #include<string.h> using namespace std; #define …

外包能做多久?这才是掩藏在虚假繁荣后的真实

讲一下我的故事和想法&#xff0c;你们自己寻思一下 我25岁&#xff0c;中级测试&#xff0c;外包&#xff0c;薪资13.5k&#xff0c;人在上海。 内卷什么的就不说了&#xff0c;而且人在外包那些高级精英年薪大几十的咱也接触不到&#xff0c;就说说外包吧。 假设以我为界限…

19 - 如何用协程来优化多线程业务?

近几年&#xff0c;国内很多互联网公司开始使用或转型 Go 语言&#xff0c;其中一个很重要的原因就是 Go 语言优越的性能表现&#xff0c;而这个优势与 Go 实现的轻量级线程 Goroutines&#xff08;协程 Coroutine&#xff09;不无关系。那么 Go 协程的实现与 Java 线程的实现有…