MySQL日期时间函数知识汇总


Posted in MySQL onMarch 17, 2022

1. 获取时间

函数 功能 返回格式
CURDATE(), CURRENT_DATE() 返回当前日期,只包含年、月、日 2022-03-08
CURTIME(), CURRENT_TIME() 返回当前时间,只包含时、分、秒 19:35:46
NOW(), SYSDATE(), CURRENT_TIMESTAMP(), LOCALTIME(), LOCALTIMESTAMP() 返回当前系统日期和时间 2022-03-08 19:37:07
UTC_DATE() 返回UTC(世界标准时间)日期 2022-03-08
UTC_TIME() 返回UTC(世界标准时间)时间 11:38:52

2. 日期与时间戳的转换

函数 功能 返回格式
UNIX_TIMESTAMP(), UNIX_TIMESTAMP(NOW()) 以UNIX时间戳的形式返回当前时间 1646739875
FROM_UNIXTIME(1646739875) 将UNIX时间戳转换为普通时间格式 2022-03-08 19:44:35

3. 获取月份、星期、星期数、天数等函数

函数 功能 返回格式
YEAR(NOW()),/MONTH(NOW()),/DAY(NOW()) 返回年/月/日 2022/3/8
HOUR(NOW()), /MONTH(NOW()), /DAY(NOW()) 返回时/分/秒 19/3/8
MONTHNAME(NOW()) 返回英文月份 March
DAYNAME(NOW()) 返回星期几 Tuesday
WEEKDAY(NOW()) 返回周几(从0开始) 1(星期二)
QUARTER(NOW()) 返回日期对应的季度,范围1-4 1
WEEK(NOW()), WEEKOFYEAR(NOW()) 返回一年中的第几周 10
DAYOFYEAR(NOW()) 返回一年中的第几天 67
DAYOFMONTH(NOW()) 返回所在月份中的第几天 8
DAYOFWEEK(NOW()) 返回周几(周日为1) 3(星期二)

4. 日期的操作函数

-- 返回指定日期中的特定部分,type指定返回的值;
SELECT EXTRACT(TYPE FROM NOW()) FROM DUAL;

TYPE的含义与取值:

type取值 含义 返回值
MICROSECOND 返回毫秒数  
SECOND 返回秒数 12
MINUTE 返回分钟数 25
HOUR 返回小时数 20(24小时制)
DAY 返回天数 8
WEEK 返回日期在一年中的第几个星期 10
MONTH 返回日期在一年中的第几个月 3
QUARTER 返回日期在一年中和第几个季度 1
YEAR 返回日期的年份 2022
SECOND_MICROSECOND 返回秒和毫秒值 34000000
MINUTE_MICROSECOND 返回分钟和毫秒值 3716000000
MINUTE_SECOND 返回分钟和秒值 3851(2022-03-08 20:38:51)
HOUR_MICROSECOND 返回小时和毫秒值 203944000000(2022-03-08 20:39:44)
HOUR_SECOND 返回小时和秒值 204025(2022-03-08 20:40:25)
HOUR_MINUTE 返回小时和分钟值 2040(2022-03-08 20:40:52)
DAY_MICROSECOND 返回天和毫秒值 204126000000(2022-03-08 20:41:26)
DAY_SECOND 返回天和秒值 204208(2022-03-08 20:42:08)
DAY_MINUTE 返回天和分钟值 2043(2022-03-08 20:43:17)
DAY_HOUR 返回天和小时 20(2022-03-08 20:43:54)
YEAR_MONTH 返回年和月 202203(2022-03-08 20:44:23)

5. 时钟和秒钟转换的函数

-- 将time转化为秒并返回结果值,转化公式为:小时*3600*分钟*69+秒
SELECT TIME_TO_SEC('2022-03-08 20:44:23')
FROM DUAL;
-- 转换结果:74663

-- seconds转化为时分秒
SELECT SEC_TO_TIME(74663) FROM DUAL;  
-- 转换结果:20:44:23

6. 计算日期和时间的函数

6.1 计算时间间隔

函数 功能 备注
DATE_ADD(datetime, INTERVAL expr type),ADDDATE(datetime, INTERVAL expr type) 计算时间间隔(时间增加) expr表示时间间隔,type值见下表
DATE_SUB(datetime, INTERVAL expr type),SUBDATE(datetime, INTERVAL expr type) 计算时间间隔(时间减少) expr表示时间间隔,type值见下表

举例:

SELECT DATE_ADD('2022-03-08 20:43:54', INTERVAL 2 DAY) AS A FROM DUAL;
SELECT ADDDATE('2022-03-08 20:43:54', INTERVAL 2 DAY) AS B FROM DUAL;
-- 返回相同结果:2022-03-10 20:43:54


SELECT DATE_SUB('2022-03-08 20:43:54', INTERVAL 2 DAY) C FROM DUAL;
SELECT SUBDATE('2022-03-08 20:43:54', INTERVAL 2 DAY) D FROM DUAL;
-- 返回相同结果:2022-03-06 20:43:54


-- 间隔两和类型的时间时可以用冒号和下划线,要用单引号
SELECT DATE_ADD('2022-03-08 20:43:54', INTERVAL '2:2' DAY_HOUR ) AS A FROM DUAL;
SELECT DATE_ADD('2022-03-08 20:43:54', INTERVAL '2_2' DAY_HOUR ) AS A FROM DUAL;
-- 返回相同结果:2022-03-10 22:43:54

type值如下表:

type间隔类型 含义
HOUR 小时
MINUTE 分钟
SECOND
YEAR
MONTH
DAY
YEAR_MONTH 年和月
DAY_HOUR 日和小时
DAY_MINUTE 日和分钟
DAY_SECOND 日和秒
HOUR_MINUTE 小时和分钟
HOUR_SECOND 小时和秒
MINUTE_SECOND 分钟和秒

6.2 时间计算

函数 功能 返回格式
ADDTIME(time1, expr) 添加expr到time1并返回结果 2022-03-09 21:44:55
SUBTIME(time2, expr) time1减去expr并返回结果 2022-03-07 19:42:53
DATEDIFF(time1, time2) 返回time1与time2的日期间隔(time1-time2) -1(天)
TIMEDIFF(time1, time2) 返回time1与time2的时间间隔(time1-time2) 26:03:45(时分秒)
FROM_DAYS(N) 返回从0000年1月1日起,N天以后的日期 0002-09-27
TO_DAYS(time) 返回时间time距离0000年1月1日的天数 738588
LAST_DAY(time) 返回time所在月份的最后一天的日期 2022-03-31
MAKEDATE(year, n) 针对给定年份与所在年份中的天数返回一个日期 2022-04-10
MAKETIME(h, m, s) 将给定的小时、分钟和秒组合成时间并返回 10:20:33
PERIOD_ADD(time,n) 此函数将给定时期的给定月份数添加到格式YYMM或YYYYMM中 20220309

举例:

SELECT DATE_ADD('2022-03-08 20:43:54', INTERVAL '2:2' DAY_HOUR ) AS A FROM DUAL;
-- 返回:2022-03-10 22:43:54

SELECT ADDTIME('2022-03-08 20:43:54', '1 1:1:1') FROM DUAL;
-- 返回:2022-03-09 21:44:55

SELECT SUBTIME('2022-03-08 20:43:54', '1 1:1:1') FROM DUAL;
-- 返回:2022-03-07 19:42:53

SELECT DATEDIFF('2022-03-08 20:43:54', '2022-03-09 20:43:54') AS A FROM DUAL;
-- 返回:-1

SELECT TIMEDIFF('2022-03-09 20:43:54', '2022-03-08 18:40:09') AS B FROM DUAL;
-- 返回:26:03:45

SELECT FROM_DAYS(1000) FROM DUAL;
-- 返回:0002-09-27

SELECT TO_DAYS('2022-03-09 20:43:54') FROM DUAL;
-- 返回:738588

SELECT LAST_DAY('2022-03-09 20:43:54') FROM DUAL;
-- 返回:2022-03-31

SELECT MAKEDATE(2022, 100) FROM DUAL;
-- 返回:2022-04-10

SELECT MAKETIME(10, 20, 33) FROM DUAL;
-- 返回:10:20:33

SELECT PERIOD_ADD(20220308,1) FROM DUAL;
-- 返回:20220309

7. 日期的格式化与解析

函数 功能 返回格式
DATE_FORMAT(date,fmt) 按照字符串fmt格式化日期date值  
TIME_FORMAT(time,fmt) 按照字符串fmt格式化时间time值  
STR_TO_DATE(str, fmt) 按照字符串fmt对str进行解析,解析为一个日期  

fmt格式如下:

格式符 说明 格式符 说明
%Y 4位数字表示年份 %y 表示两位数字的年份
%M 月名表示月份(January,....) %m 两位数字表示月份
%b 缩写的月名(Jan.,Feb.,....) %d 两位数字表示月中的天数
%D 英文后缀表示月中的天数(1st,2nd,3rd,...) %c 数字表示月份(1,2,3。。)
%e 数字形式表示月中的天数(1,2,3,4,5.....) %h 两位数字表示小时,12小时制(01,02。。)
%H 两位数字表示小数,24小时制(01,02..) %l 数字形式表示小时,12小时制(1,2。。)
%k 数字形式的小时,24小时制(1,2,3) %S和%s 两位数字表示秒(00, 01, 02。。)
%i 两位数字表示分钟(00,01,02) %a 一周中的星期缩写(Sun)
%W 一周中的星期名称(Sunday...)    
%w 以数字表示周中的天数(0=Sunday,1=Monday....)    
%j 以3位数字表示年中的天数(001,002...) %U 以数字表示年中的第几周,(1,2,3。。)其中Sunday为周中第一天
%u 以数字表示年中的第几周,(1,2,3。。)其中Monday为周中第一天    
%T 24小时制 %r 12小时制
%p AM或PM %% 表示%

举例如下:

 SELECT DATE_FORMAT(NOW(), '%H:%i:%s');
 -- 返回结果:09:58:12
函数 功能 返回格式
GET_FORMAT(date_type,format_type) 返回日期字符串的显示格式  

format_type取值如下:

MySQL日期时间函数知识汇总

举例如下:

 SELECT GET_FORMAT(DATE, 'USA');
 -- 返回:%m.%d.%Y

到此这篇关于MySQL日期时间函数知识汇总的文章就介绍到这了,更多相关MySQL日期时间函数内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
Mysql基础知识点汇总
May 26 MySQL
MySQL中几种插入和批量语句实例详解
Sep 14 MySQL
Mysql忘记密码解决方法
Feb 12 MySQL
MySQL中B树索引和B+树索引的区别详解
Mar 03 MySQL
MySQL RC事务隔离的实现
Mar 31 MySQL
MySQL Server 层四个日志
Mar 31 MySQL
Mysql将字符串按照指定字符分割的正确方法
May 30 MySQL
MySQL普通表如何转换成分区表
May 30 MySQL
delete in子查询不走索引问题分析
Jul 07 MySQL
MySQL性能指标TPS+QPS+IOPS压测
Aug 05 MySQL
详解MySQL的内连接和外连接
May 08 MySQL
MySQL优化常用的19种有效方法(推荐!)
MySQL多表查询机制
MySQL高级进阶sql语句总结大全
Mar 16 #MySQL
一条慢SQL语句引发的改造之路
MySQL中一条update语句是如何执行的
关于k8s环境部署mysql主从的问题
Mar 13 #MySQL
MYSQL如何查看进程和kill进程
Mar 13 #MySQL
You might like
德生PL990,目前市面上唯一一款便携式插卡蓝牙全波段高性能收音机
2021/03/02 无线电
杏林同学录(三)
2006/10/09 PHP
PHP数据流应用的一个简单实例
2012/09/14 PHP
php调用mysql存储过程实例分析
2014/12/29 PHP
php打造智能化的柱状图程序,用于报表等
2015/06/19 PHP
PHP页面跳转实现延时跳转的方法
2016/12/10 PHP
PHP实现登陆表单提交CSRF及验证码
2017/01/24 PHP
php利用imagemagick实现复古老照片效果实例
2017/02/16 PHP
javascript之可拖动的iframe效果代码
2008/08/01 Javascript
JavaScript入门教程(3) js面向对象
2009/01/31 Javascript
js简单的弹出框有关闭按钮
2014/05/05 Javascript
js propertychange和oninput事件
2014/09/28 Javascript
node.js中的favicon.ico请求问题处理
2014/12/15 Javascript
jquery左右全屏大尺寸多图滑动效果代码分享
2015/08/28 Javascript
JavaScript学习小结之被嫌弃的eval函数和with语句实例详解
2016/08/01 Javascript
JS实现图片放大缩小的方法
2017/02/15 Javascript
jQuery实现动态控制页面元素的方法分析
2017/12/20 jQuery
关于Angularjs中自定义指令一些有价值的细节和技巧小结
2018/04/22 Javascript
详解ES6系列之私有变量的实现
2018/11/21 Javascript
解决layui 表单元素radio不显示渲染的问题
2019/09/04 Javascript
微信小程序静默登录的实现代码
2020/01/08 Javascript
vue 移动端记录页面浏览位置的方法
2020/03/11 Javascript
nuxt 实现在其它js文件中使用store的方式
2020/11/05 Javascript
Python实现霍夫圆和椭圆变换代码详解
2018/01/12 Python
python 每天如何定时启动爬虫任务(实现方法分享)
2018/05/21 Python
python networkx 包绘制复杂网络关系图的实现
2019/07/10 Python
利用OpenCV中对图像数据进行64F和8U转换的方式
2020/06/03 Python
支票、地址标签、包装纸和慰问卡:Current Catalog
2018/01/30 全球购物
美国渔具店:FishUSA
2019/08/07 全球购物
介绍下static、final、abstract区别
2015/01/30 面试题
J2EE是技术还是平台还是框架
2016/08/14 面试题
药剂学专业应届生自荐信
2013/09/29 职场文书
幼儿园教师培训制度
2014/01/16 职场文书
人事部专员岗位职责
2014/03/04 职场文书
校长创先争优承诺书
2014/08/30 职场文书
公文写作指导之倡议书!
2019/07/03 职场文书