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 05 MySQL
详解MySQL的半同步
Apr 22 MySQL
修改MySQL的数据库引擎为INNODB的方法
May 26 MySQL
MySQL CHAR和VARCHAR该如何选择
May 31 MySQL
mysql备份策略的实现(全量备份+增量备份)
Jul 07 MySQL
mysql中整数数据类型tinyint详解
Dec 06 MySQL
mysql sum(if())和count(if())的用法说明
Jan 18 MySQL
Mysql忘记密码解决方法
Feb 12 MySQL
mysql 生成连续日期及变量赋值
Mar 20 MySQL
MySQL分布式恢复进阶
Jul 23 MySQL
MySQL 原理与优化之原数据锁的应用
Aug 14 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
完美解决dedecms中的[html][/html]和[code][/code]问题
2007/03/20 PHP
PHP之uniqid()函数用法
2014/11/03 PHP
php实现点击可刷新验证码
2015/11/07 PHP
php命令行(cli)模式下报require 加载路径错误的解决方法
2015/11/23 PHP
iOS自定义提示弹出框实现类似UIAlertView的效果
2016/11/16 PHP
修改Laravel自带的认证系统的User类的命名空间的步骤
2019/10/15 PHP
JavaScript 精粹读书笔记(1,2)
2010/02/07 Javascript
使用jQuery轻松实现Ajax的实例代码
2010/08/16 Javascript
根据当前时间在jsp页面上显示上午或下午
2014/08/18 Javascript
jQuery基础知识小结
2014/12/22 Javascript
JavaScript中的方法调用详细介绍
2014/12/30 Javascript
javascript中caller和callee详解
2015/08/10 Javascript
jQuery获取单击节点对象的方法
2016/06/02 Javascript
js接收并转化Java中的数组对象的方法
2016/08/11 Javascript
详解在React中跨组件分发状态的三种方法
2018/08/09 Javascript
ES6 Proxy实现Vue的变化检测问题
2019/06/11 Javascript
javascript实现5秒倒计时并跳转功能
2019/06/20 Javascript
vue组件内部引入外部js文件的方法
2020/01/18 Javascript
vue实现图片上传功能
2020/05/28 Javascript
让python同时兼容python2和python3的8个技巧分享
2014/07/11 Python
解决tensorflow1.x版本加载saver.restore目录报错的问题
2018/07/26 Python
在IPython中执行Python程序文件的示例
2018/11/01 Python
python opencv读mp4视频的实例
2018/12/07 Python
让你的Python代码实现类型提示功能
2019/11/19 Python
python两个list[]相加的实现方法
2020/09/23 Python
HTML5 video标签(播放器)学习笔记(二):播放控制
2015/04/24 HTML / CSS
中国专业的音频分享平台:喜马拉雅
2019/05/24 全球购物
比较基础的php面试题及答案-填空题
2014/04/26 面试题
C#基础面试题
2016/10/17 面试题
舞蹈教师自荐信
2014/01/27 职场文书
七年级生物教学反思
2014/01/30 职场文书
理财计划书
2014/08/14 职场文书
关于长城的导游词
2015/01/30 职场文书
大雁塔英文导游词
2015/02/10 职场文书
小学远程教育工作总结
2015/08/13 职场文书
如何利用python创作字符画
2022/06/25 Python