MySQL日期时间函数知识汇总
作者:返回主页深海云帆 发布时间:2024-01-17 04:02:56
标签:MySQL日期,时间,函数
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取值如下:
举例如下:
SELECT GET_FORMAT(DATE, 'USA');
-- 返回:%m.%d.%Y
来源:https://www.cnblogs.com/hqzmss/p/15984111.html
0
投稿
猜你喜欢
- 皇城PKPython中格式化字符串目前有两种阵营:%和format,我们应该选择哪种呢?自从Python2.6引入了format这个格式化字
- 本文实例讲述了Python迭代器与生成器用法。分享给大家供大家参考,具体如下:迭代器,迭代的工具什么是迭代器?指的是一个重复的过程,每一次重
- 梯度下降(Gradient Descent)算法是机器学习中使用非常广泛的优化算法。当前流行的机器学习库或者深度学习库都会包括梯度下降算法的
- Birdseye是一个Python调试器,它在函数调用中记录表达式的值,并让你在函数退出后轻松查看它们,例如:无论你如何运行或编辑代码,都可
- 1、不指定开始和结束的索引[:],这样得到的切片就可以包含整个列表,然后给切片一个新的变量,从而实现复制列表。2、创建原始列表的副本,两个列
- 在ASP.NET2.0通过SMTP的验证发送EMAIL ,代码如下:’Create a new MailMes
- 本文介绍的是关于Python列表项排序的相关内容,分享出来供大家参考学习,下面来看看详细的介绍:典型代码1:data_list = [6,
- SQLite Delete详解SQLite 的 DELETE 查询用于删除表中已有的记录。可以使用带有 WHERE 子句的 DELETE 查
- 在使用selenium去获取淘宝商品信息时会遇到登录界面这个登录界面处理的难度在于滑动验证的实现,有的人使用微博登录,避免了滑动验证,那可不
- 我们知道了钢琴键盘的音高是其实是有规律的,如下频率翻倍,高一个八度国际基准音:440Hz,钢琴键盘上对应小字一组的la小字一组的la可以看下
- 对于一些复杂的hdf5文件,通过可视化的方法可以比较容易的了解文件的内部结构,下面介绍基于python的一个hdf5文件的安装使用方法1 安
- 首先说明下范围用Javascript来开发WEB页面的动画效果该思路同时考虑页面效率、SEO,如果数据大,也可以缓解后端压力。这个是程序设计
- 之前在写连表查询的时候,老是分不清楚where和on的区别,导致有时写的SQL会出现一点小的问题,这里专门写篇文章做下记录,如果你也分不清,
- 引言近期网上这位卖蜂蜜的小伙鬼畜挺火的,大家质疑背景造假,这里我就带着大家实现“背景造假”(PS:原
- 笔者认为,在创建索引时要做到三个适当,即在适当的表上、适当的列上创建适当数量的索引。虽然这可以通过一句话来概括优化的索引的基本准则,但是要做
- div+css实现圆角边框,在网络上查看了一下,很多都是实现圆角的矩形的方法,我在这里介绍的是实现圆角矩形边框的方法。用代码说明问题:<
- 1.先检查系统是否装有mysqlrpm -qa | grep mysql2.下载mysql的repo源(5.7)wget -i -c htt
- 在之前的文章中,我们介绍了PyQt5和PySide2中主窗口控件MainWindow的使用、窗口控件的4中基础布局管理。从本篇开始,我们来了
- 今天给大家分享小编遇到的一个坑有关python递归调用中的坑:打印有值, 返回却None问题。问题:前几天写一个小面试题, 忽然有个惊悚的发
- Tkinter 是 Python 的标准 GUI 库。Python 使用 Tkinter 可以快速的创建 GUI 应用程序。这篇文章使用tk