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分库分表与分区的入门指南
Apr 22 MySQL
my.ini优化mysql数据库性能的十个参数(推荐)
May 26 MySQL
MyBatis 动态SQL全面详解
Oct 05 MySQL
面试被问select......for update会锁表还是锁行
Nov 11 MySQL
SQL注入篇学习之盲注/宽字节注入
Mar 03 MySQL
Pycharm远程调试和MySQL数据库授权问题
Mar 18 MySQL
MySQL磁盘碎片整理实例演示
Apr 03 MySQL
Innodb存储引擎中的后台线程详解
Apr 03 MySQL
mysql中如何用命令创建联合唯一索引
Apr 20 MySQL
在MySQL中你成功的避开了所有索引
Apr 20 MySQL
MySQL约束(创建表时的各种条件说明)
Jun 21 MySQL
mysql序号rownum行号实现方式
Dec 24 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
PHP跳转页面的几种实现方法详解
2013/06/08 PHP
CI框架简单分页类用法示例
2020/06/06 PHP
DWR Ext 加载数据
2009/03/22 Javascript
Jquery Ajax学习实例3 向WebService发出请求,调用方法返回数据
2010/03/16 Javascript
jquery.post用法关于type设置问题补充
2014/01/03 Javascript
jQuery验证元素是否为空的两种常用方法
2015/03/17 Javascript
jQuery实现表格展开与折叠的方法
2015/05/04 Javascript
Angularjs结合Bootstrap制作的一个TODO List
2016/08/18 Javascript
js闭包用法实例详解
2016/12/13 Javascript
Canvas + JavaScript 制作图片粒子效果
2017/02/08 Javascript
ionic2 tabs 图标自定义实例
2017/03/08 Javascript
如何通过非数字与字符的方式实现PHP WebShell详解
2017/07/02 Javascript
vue2组件之select2调用的示例代码
2017/10/12 Javascript
基于js中this和event 的区别(详解)
2017/10/24 Javascript
Python中的二叉树查找算法模块使用指南
2014/07/04 Python
基于Django的ModelForm组件(详解)
2017/12/07 Python
python与sqlite3实现解密chrome cookie实例代码
2018/01/20 Python
Python实现多线程的两种方式分析
2018/08/29 Python
Python3 实现串口两进程同时读写
2019/06/12 Python
用Python调用win命令行提高工作效率的实例
2019/08/14 Python
Python基于pygame实现单机版五子棋对战
2019/12/26 Python
收集的22款给力的HTML5和CSS3帮助工具
2012/09/14 HTML / CSS
css3新增颜色表示方式分享
2014/04/15 HTML / CSS
使用HTML5的链接预取功能(link prefetching)给网站提速
2012/12/13 HTML / CSS
巴西宠物店在线:Geração Pet
2017/05/31 全球购物
菲律宾优惠券网站:MetroDeal
2019/04/12 全球购物
RUIFIER官网:英国奢侈高级珠宝品牌
2020/06/12 全球购物
总经理任命书
2014/03/29 职场文书
班级文化标语
2014/06/23 职场文书
公司租车协议书
2015/01/29 职场文书
车间主任岗位职责
2015/02/03 职场文书
开会通知
2015/04/20 职场文书
一年级语文教学随笔
2015/08/14 职场文书
Python insert() / append() 用法 Leetcode实战演示
2021/03/31 Python
mysql 索引合并的使用
2021/08/30 MySQL
java中用float时,数字后面加f,这样是为什么你知道吗
2021/09/04 Java/Android