SQL 日期函数

news2024/12/28 19:18:31

在数据库中,日期和时间是经常需要处理的数据类型之一。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             |
+---------------+

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

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

相关文章

第一百七十二回 SegmentedButton组件

文章目录 1. 概念介绍2. 使用方法2.1 SegmentedButton2.2 ButtonSegment 3. 代码与效果3.1 示例代码3.2 运行效果 4. 内容总结 我们在上一章回中介绍了"SearchBar组件"相关的内容,本章回中将 介绍SegmentedButton组件.闲话休提,让我们一起Tal…

抖斗音_快块手直播间获客助手+采集脚本+引流软件功能介绍

软件功能: 支持同时采集多个直播间,弹幕,关*注,礼*物,进直播间,部分用户手*号,粉*丝团采集 不支持采集匿*名直播间 设备需求: 电脑(win10系统) 文章分享者&#xff1…

【Linux】第十五站:环境变量

文章目录 一、进程相关的一些概念1.一些常见的概念2.对于并发3.**进程切换** 二、环境变量1.PATH环境变量2.HOME环境变量3.SHELL环境变量4.env5.系统调用接口与环境变量6.什么是环境变量?7.命令行参数8.main函数的第三个命令行参数9.如何验证环境变量是可以被继承的…

java实现选择排序

图解 以下是Java实现选择排序的示例代码&#xff1a; public class SelectionSort {public static void selectionSort(int[] arr) {int n arr.length;// 遍历未排序部分的数组for (int i 0; i < n - 1; i) {// 在未排序部分中查找最小元素的下标int minIndex i;for (in…

MySQL 人脸向量,欧几里得距离相似查询

前言 如标题&#xff0c;就是通过提取的人脸特征向量&#xff0c;写一个欧几里得 SQL 语句&#xff0c;查询数据库里相似度排前 TOP_K 个的数据记录。做法虽然另类&#xff0c;业务层市面上有现成的面部检索 API&#xff0c;技术层现在有向量数据库。 用 MySQL 关系型存储 128 …

新学期帮娃把拖延症戒了!这个时间管理器太太太有用啦!

十个孩子九个拖延~ 不要唠叨&#xff0c;不要指责 时间流逝一眼可见&#xff0c;打败拖延症&#xff01; 赶紧把这款时间管理器用上 当当狸时间管理器 说起孩子没有时间观念、拖延症 每个老母亲都有一肚子苦水要倒&#xff5e;&#xff5e; 市面上有很多计时器&#xff0…

【k8s集群搭建(一):基于虚拟机的linux的k8s集群搭建_超详细_解决并记录全过程步骤以及自己的踩坑记录】

虚拟机准备3台Linux系统 k8s集群安装 每一台机器需要安装以下内容&#xff1a; docker:容器运行环境 kubelet:控制机器中所有资源 bubelctl:命令行 kubeladm:初始化集群的工具 Docker安装 安装一些必要的包&#xff0c;yum-util 提供yum-config-manager功能&#xff0c;另两…

主题讲座:全球增材制造现状与未来(暨香港科技大学广州|智能制造学域2024博士学位全额奖学金项目)

时间&#xff1a;2023 年11月16日&#xff08;星期四&#xff09;14:30 地点&#xff1a;合肥工业大学 学术会议中心三楼报告厅 主讲嘉宾&#xff1a;陈模军 助理教授 https://facultyprofiles.hkust-gz.edu.cn/faculty-personal-page/CHEN-Mojun/mjchen 报名表直达&#xff1…

Java 入门基础题

目录 1.输出一个整数的每一位 2.判定素数 3.求最大值方法的重载 4.输出闰年 5.打印 X 图形 6.数字9 出现的次数 7.计算分数的值 8. 模拟登陆 9.使用函数求最大值 10.斐波那契数列 星光不负赶路人&#xff0c;加油铁子们&#xff01;&#xff01;&#xff01; 1…

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

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

人工智能与充电技术:携手共创智能充电新时代

人工智能与充电技术&#xff1a;携手共创智能充电新时代 摘要&#xff1a;本文探讨了人工智能与充电技术的结合及其在未来充电设施领域的应用。通过分析智能充电系统的技术原理、优势以及挑战&#xff0c;本文展望了由人工智能驱动的充电技术为未来电动交通带来的巨大变革与机…

java实现插入排序

图解 以下是Java实现插入排序的代码&#xff1a; public class InsertionSort {public static void main(String[] args) {int[] arr {5, 2, 4, 6, 1, 3};insertionSort(arr);System.out.println(Arrays.toString(arr)); // output: [1, 2, 3, 4, 5, 6]}public static void i…

【Linux】-文件系统的详解以及软硬链接

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树&#x1f388; &#x1f389;作者宣言&#xff1a;认真写好每一篇博客&#x1f4a4; &#x1f38a;作者gitee:gitee✨ &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 动态规划算法&#x1f384; 如 果 你 …

【Qt之QWizard】使用1

QWizard使用 描述方法枚举&#xff1a;enum QWizard::WizardButton枚举&#xff1a;enum QWizard::WizardOption枚举&#xff1a;enum QWizard::WizardStyle枚举&#xff1a;enum QWizard::WizardPixmap常用成员方法槽函数信号 示例设置标题添加page页设置按钮文本设置自定义按…

H5游戏源码分享-超级染色体小游戏

H5游戏源码分享-超级染色体小游戏 游戏玩法 不断地扩大发展同颜色的色块 用最少的步数完成游戏 <!DOCTYPE html> <html><head><meta charset"UTF-8"><meta name"viewport"content"widthdevice-width,user-scalableno,init…

Linux shell编程学习笔记25:tty

1 tty的由来 在 1830 年代和 1840 年代&#xff0c;开发了称为电传打字机&#xff08;teletypewriters&#xff09;的机器&#xff0c;这些机器可以将发件人在键盘上输入的消息“沿着线路”发送在接收端并打印在纸上。 电传打字机的名称由teletypewriters&#xff0c; 缩短为…

学习samba

文章目录 一、samba介绍二、samba的主要进程三、配置文件四、例子 一、samba介绍 1、SMB&#xff08;Server Message Block&#xff09;协议实现文件共享&#xff0c;也称为CIFS&#xff08;Common Internet File System&#xff09;。 2、是Windows和类Unix系统之间共享文件的…

Android拖放startDragAndDrop拖拽Glide灵活加载堆叠圆角图,Kotlin(6)

Android拖放startDragAndDrop拖拽Glide灵活加载堆叠圆角图&#xff0c;Kotlin&#xff08;6&#xff09; Android拖放startDragAndDrop拖拽Glide加载堆叠圆角图&#xff0c;Kotlin&#xff08;5&#xff09;-CSDN博客文章浏览阅读1.3k次。&#xfeff;&#xfeff;Android Dyna…

Python---集合中的交集 、并集 | 与差集 - 特性

用 & 来求两个集合的交集&#xff1a;-----键盘上的7上的符号&#xff0c;shift 7 同时按 用 | 来求两个集合的并集&#xff1a; -----键盘上的7上的符号&#xff0c;shift 同时按&#xff08;就是enter键上面那个|\ &#xff09; 用 - 来求两个集合的差集&#xff…

dbeaver导入sql脚本报错:unhandled event loop exception java heap space

在DBeaver里执行一个有8w条数据的sql文件&#xff0c;只保存了2k条 错误原因见&#xff1a; https://blog.csdn.net/liu_feng_zi_/article/details/122578880文章作者所描述的&#xff1a; 使用dbeaver连接MySQL数据库&#xff0c;在通过sql脚本插入数据&#xff0c;或将插入语…