MySQL所有的日期时间函数处理
发表于:2025-01-27 作者:千家信息网编辑
千家信息网最后更新 2025年01月27日,下面讲讲关于MySQL所有的日期时间函数处理,文字的奥妙在于贴近主题相关。所以,闲话就不谈了,我们直接看下文吧,相信看完MySQL所有的日期时间函数处理这篇文章你一定会有所受益。-- MySQL日期时
千家信息网最后更新 2025年01月27日MySQL所有的日期时间函数处理
下面讲讲关于MySQL所有的日期时间函数处理,文字的奥妙在于贴近主题相关。所以,闲话就不谈了,我们直接看下文吧,相信看完MySQL所有的日期时间函数处理这篇文章你一定会有所受益。
-- MySQL日期时间处理函数-- 当前日期:2017-05-12(突然发现今天512,是不是会拉防空警报)SELECT NOW() FROM DUAL;-- 当前日期时间:2017-05-12 11:41:47-- 在MySQL里也存在和Oracle里类似的dual虚拟表:官方声明纯粹是为了满足select ... from...这一习惯问题,mysql会忽略对该表的引用。-- 那么MySQL中就不用DUAL了吧。SELECT NOW();-- 当前日期时间:2017-05-12 11:41:55-- 除了 now() 函数能获得当前的日期时间外,MySQL 中还有下面的函数:SELECT CURRENT_TIMESTAMP();-- 2017-05-15 10:19:31SELECT CURRENT_TIMESTAMP;-- 2017-05-15 10:19:51SELECT LOCALTIME();-- 2017-05-15 10:20:00SELECT LOCALTIME;-- 2017-05-15 10:20:10SELECT LOCALTIMESTAMP();-- 2017-05-15 10:20:21(v4.0.6)SELECT LOCALTIMESTAMP;-- 2017-05-15 10:20:30(v4.0.6)-- 这些日期时间函数,都等同于 now()。鉴于 now() 函数简短易记,建议总是使用 now()来替代上面列出的函数。SELECT SYSDATE();-- 当前日期时间:2017-05-12 11:42:03-- sysdate() 日期时间函数跟 now() 类似,-- 不同之处在于:now() 在执行开始时值就得到了;sysdate() 在函数执行时动态得到值。-- 看下面的例子就明白了:SELECT NOW(), SLEEP(3), NOW();SELECT SYSDATE(), SLEEP(3), SYSDATE();SELECT CURDATE();-- 当前日期:2017-05-12SELECT CURRENT_DATE();-- 当前日期:等同于 CURDATE()SELECT CURRENT_DATE;-- 当前日期:等同于 CURDATE()SELECT CURTIME();-- 当前时间:11:42:47SELECT CURRENT_TIME();-- 当前时间:等同于 CURTIME()SELECT CURRENT_TIME;-- 当前时间:等同于 CURTIME()-- 获得当前 UTC 日期时间函数SELECT UTC_TIMESTAMP(), UTC_DATE(), UTC_TIME()-- MySQL 获得当前时间戳函数:current_timestamp, current_timestamp()SELECT CURRENT_TIMESTAMP, CURRENT_TIMESTAMP();-- 2017-05-15 10:32:21 | 2017-05-15 10:32:21-- MySQL 日期时间 Extract(选取) 函数SET @dt = '2017-05-15 10:37:14.123456';SELECT DATE(@dt);-- 获取日期:2017-05-15SELECT TIME('2017-05-15 10:37:14.123456');-- 获取时间:10:37:14.123456SELECT YEAR('2017-05-15 10:37:14.123456');-- 获取年份SELECT MONTH('2017-05-15 10:37:14.123456');-- 获取月份SELECT DAY('2017-05-15 10:37:14.123456');-- 获取日SELECT HOUR('2017-05-15 10:37:14.123456');-- 获取时SELECT MINUTE('2017-05-15 10:37:14.123456');-- 获取分SELECT SECOND('2017-05-15 10:37:14.123456');-- 获取秒SELECT MICROSECOND('2017-05-15 10:37:14.123456');-- 获取毫秒SELECT QUARTER('2017-05-15 10:37:14.123456');-- 获取季度SELECT WEEK('2017-05-15 10:37:14.123456');-- 20 (获取周)SELECT WEEK('2017-05-15 10:37:14.123456', 7);-- ****** 测试此函数在MySQL5.6下无效SELECT WEEKOFYEAR('2017-05-15 10:37:14.123456');-- 同week()SELECT DAYOFYEAR('2017-05-15 10:37:14.123456');-- 135 (日期在年度中第几天)SELECT DAYOFMONTH('2017-05-15 10:37:14.123456');-- 5 (日期在月度中第几天)SELECT DAYOFWEEK('2017-05-15 10:37:14.123456');-- 2 (日期在周中第几天;周日为第一天)SELECT WEEKDAY('2017-05-15 10:37:14.123456');-- 0SELECT WEEKDAY('2017-05-21 10:37:14.123456');-- 6(与dayofweek()都表示日期在周的第几天,只是参考标准不同,weekday()周一为第0天,周日为第6天)SELECT YEARWEEK('2017-05-15 10:37:14.123456');-- 201720(年和周)SELECT EXTRACT(YEAR FROM '2017-05-15 10:37:14.123456');SELECT EXTRACT(MONTH FROM '2017-05-15 10:37:14.123456');SELECT EXTRACT(DAY FROM '2017-05-15 10:37:14.123456');SELECT EXTRACT(HOUR FROM '2017-05-15 10:37:14.123456');SELECT EXTRACT(MINUTE FROM '2017-05-15 10:37:14.123456');SELECT EXTRACT(SECOND FROM '2017-05-15 10:37:14.123456');SELECT EXTRACT(MICROSECOND FROM '2017-05-15 10:37:14.123456');SELECT EXTRACT(QUARTER FROM '2017-05-15 10:37:14.123456');SELECT EXTRACT(WEEK FROM '2017-05-15 10:37:14.123456');SELECT EXTRACT(YEAR_MONTH FROM '2017-05-15 10:37:14.123456');SELECT EXTRACT(DAY_HOUR FROM '2017-05-15 10:37:14.123456');SELECT EXTRACT(DAY_MINUTE FROM '2017-05-15 10:37:14.123456');-- 151037(日时分)SELECT EXTRACT(DAY_SECOND FROM '2017-05-15 10:37:14.123456');-- 15103714(日时分秒)SELECT EXTRACT(DAY_MICROSECOND FROM '2017-05-15 10:37:14.123456');-- 15103714123456(日时分秒毫秒)SELECT EXTRACT(HOUR_MINUTE FROM '2017-05-15 10:37:14.123456');-- 1037(时分)SELECT EXTRACT(HOUR_SECOND FROM '2017-05-15 10:37:14.123456');-- 103714(时分秒)SELECT EXTRACT(HOUR_MICROSECOND FROM '2017-05-15 10:37:14.123456');-- 103714123456(日时分秒毫秒)SELECT EXTRACT(MINUTE_SECOND FROM '2017-05-15 10:37:14.123456');-- 3714(分秒)SELECT EXTRACT(MINUTE_MICROSECOND FROM '2017-05-15 10:37:14.123456');-- 3714123456(分秒毫秒)SELECT EXTRACT(SECOND_MICROSECOND FROM '2017-05-15 10:37:14.123456');-- 14123456(秒毫秒)-- MySQL Extract() 函数除了没有date(),time() 的功能外,其他功能一应具全。-- 并且还具有选取'day_microsecond' 等功能。-- 注意这里不是只选取 day 和 microsecond,而是从日期的 day 部分一直选取到 microsecond 部分。SELECT DAYNAME('2017-05-15 10:37:14.123456');-- Monday(返回英文星期)SELECT MONTHNAME('2017-05-15 10:37:14.123456');-- May(返回英文月份)SELECT LAST_DAY('2016-02-01');-- 2016-02-29 (返回月份中最后一天)SELECT LAST_DAY('2016-05-01');-- 2016-05-31-- DATE_ADD(date,INTERVAL expr type) 从日期加上指定的时间间隔-- type参数可参考:http://www.w3school.com.cn/sql/func_date_sub.aspSELECT DATE_ADD('2017-05-15 10:37:14.123456',INTERVAL 1 YEAR);-- 表示:2018-05-15 10:37:14.123456SELECT DATE_ADD('2017-05-15 10:37:14.123456',INTERVAL 1 QUARTER);-- 表示:2017-08-15 10:37:14.123456SELECT DATE_ADD('2017-05-15 10:37:14.123456',INTERVAL 1 MONTH);-- 表示:2017-06-15 10:37:14.123456SELECT DATE_ADD('2017-05-15 10:37:14.123456',INTERVAL 1 WEEK);-- 表示:2017-05-22 10:37:14.123456SELECT DATE_ADD('2017-05-15 10:37:14.123456',INTERVAL 1 DAY);-- 表示:2017-05-16 10:37:14.123456SELECT DATE_ADD('2017-05-15 10:37:14.123456',INTERVAL 1 HOUR);-- 表示:2017-05-15 11:37:14.123456SELECT DATE_ADD('2017-05-15 10:37:14.123456',INTERVAL 1 MINUTE);-- 表示:2017-05-15 10:38:14.123456SELECT DATE_ADD('2017-05-15 10:37:14.123456',INTERVAL 1 SECOND);-- 表示:2017-05-15 10:37:15.123456SELECT DATE_ADD('2017-05-15 10:37:14.123456',INTERVAL 1 MICROSECOND);-- 表示:2017-05-15 10:37:14.123457-- DATE_SUB(date,INTERVAL expr type) 从日期减去指定的时间间隔SELECT DATE_SUB('2017-05-15 10:37:14.123456',INTERVAL 1 YEAR);-- 表示:2016-05-15 10:37:14.123456SELECT DATE_SUB('2017-05-15 10:37:14.123456',INTERVAL 1 QUARTER);-- 表示:2017-02-15 10:37:14.123456SELECT DATE_SUB('2017-05-15 10:37:14.123456',INTERVAL 1 MONTH);-- 表示:2017-04-15 10:37:14.123456SELECT DATE_SUB('2017-05-15 10:37:14.123456',INTERVAL 1 WEEK);-- 表示:2017-05-08 10:37:14.123456SELECT DATE_SUB('2017-05-15 10:37:14.123456',INTERVAL 1 DAY);-- 表示:2017-05-14 10:37:14.123456SELECT DATE_SUB('2017-05-15 10:37:14.123456',INTERVAL 1 HOUR);-- 表示:2017-05-15 09:37:14.123456SELECT DATE_SUB('2017-05-15 10:37:14.123456',INTERVAL 1 MINUTE);-- 表示:2017-05-15 10:36:14.123456SELECT DATE_SUB('2017-05-15 10:37:14.123456',INTERVAL 1 SECOND);-- 表示:2017-05-15 10:37:13.123456SELECT DATE_SUB('2017-05-15 10:37:14.123456',INTERVAL 1 MICROSECOND);-- 表示:2017-05-15 10:37:14.123455-- 经特殊日期测试,DATE_SUB(date,INTERVAL expr type)可放心使用SELECT DATE_SUB(CURDATE(),INTERVAL 1 DAY);-- 前一天:2017-05-11SELECT DATE_SUB(CURDATE(),INTERVAL -1 DAY);-- 后一天:2017-05-13SELECT DATE_SUB(CURDATE(),INTERVAL 1 MONTH);-- 一个月前日期:2017-04-12SELECT DATE_SUB(CURDATE(),INTERVAL -1 MONTH);-- 一个月后日期:2017-06-12SELECT DATE_SUB(CURDATE(),INTERVAL 1 YEAR);-- 一年前日期:2016-05-12SELECT DATE_SUB(CURDATE(),INTERVAL -1 YEAR);-- 一年后日期:20178-06-12-- MySQL date_sub() 日期时间函数 和 date_add() 用法一致,并且可以用INTERNAL -1 xxx的形式互换使用;-- 另外,MySQL 中还有两个函数 subdate(), subtime(),建议,用 date_sub() 来替代。-- MySQL 另类日期函数:period_add(P,N), period_diff(P1,P2)-- 函数参数"P" 的格式为"YYYYMM" 或者 "YYMM",第二个参数"N" 表示增加或减去 N month(月)。-- MySQL period_add(P,N):日期加/减去N月。SELECT PERIOD_ADD(201705,2), PERIOD_ADD(201705,-2);-- 201707 20170503-- period_diff(P1,P2):日期 P1-P2,返回 N 个月。SELECT PERIOD_DIFF(201706, 201703);-- -- datediff(date1,date2):两个日期相减 date1 - date2,返回天数SELECT DATEDIFF('2017-06-05','2017-05-29');-- 7-- TIMEDIFF(time1,time2):两个日期相减 time1 - time2,返回 TIME 差值SELECT TIMEDIFF('2017-06-05 19:28:37', '2017-06-05 17:00:00');-- 02:28:37-- MySQL日期转换函数SELECT TIME_TO_SEC('01:00:05'); -- 3605SELECT SEC_TO_TIME(3605);-- 01:00:05-- MySQL (日期、天数)转换函数:to_days(date), from_days(days)SELECT TO_DAYS('0000-00-00'); -- NULL SELECT TO_DAYS('2017-06-05'); -- 736850SELECT FROM_DAYS(0); -- '0000-00-00' SELECT FROM_DAYS(736850); -- '2017-06-05'-- MySQL Str to Date (字符串转换为日期)函数:str_to_date(str, format)SELECT STR_TO_DATE('06.05.2017 19:40:30', '%m.%d.%Y %H:%i:%s');-- 2017-06-05 19:40:30SELECT STR_TO_DATE('06/05/2017', '%m/%d/%Y'); -- 2017-06-05SELECT STR_TO_DATE('2017/12/3','%Y/%m/%d') -- 2017-12-03SELECT STR_TO_DATE('20:09:30', '%h:%i:%s') -- NULL(超过12时的小时用小写h,得到的结果为NULL)-- 日期时间格式化SELECT DATE_FORMAT('2017-05-12 17:03:51', '%Y年%m月%d日 %H时%i分%s秒');-- 2017年05月12日 17时03分51秒(具体需要什么格式的数据根据实际情况来;小写h为12小时制;)SELECT TIME_FORMAT('2017-05-12 17:03:51', '%Y年%m月%d日 %H时%i分%s秒');-- 0000年00月00日 17时03分51秒(time_format()只能用于时间的格式化)-- STR_TO_DATE()和DATE_FORMATE()为互逆操作-- MySQL 获得国家地区时间格式函数:get_format()-- MySQL get_format() 语法:get_format(date|time|datetime, 'eur'|'usa'|'jis'|'iso'|'internal'-- MySQL get_format() 用法的全部示例:SELECT GET_FORMAT(DATE,'usa'); -- '%m.%d.%Y' SELECT GET_FORMAT(DATE,'jis'); -- '%Y-%m-%d' SELECT GET_FORMAT(DATE,'iso'); -- '%Y-%m-%d' SELECT GET_FORMAT(DATE,'eur'); -- '%d.%m.%Y' SELECT GET_FORMAT(DATE,'internal'); -- '%Y%m%d' SELECT GET_FORMAT(DATETIME,'usa'); -- '%Y-%m-%d %H.%i.%s' SELECT GET_FORMAT(DATETIME,'jis'); -- '%Y-%m-%d %H:%i:%s' SELECT GET_FORMAT(DATETIME,'iso'); -- '%Y-%m-%d %H:%i:%s' SELECT GET_FORMAT(DATETIME,'eur'); -- '%Y-%m-%d %H.%i.%s' SELECT GET_FORMAT(DATETIME,'internal'); -- '%Y%m%d%H%i%s' SELECT GET_FORMAT(TIME,'usa'); -- '%h:%i:%s %p' SELECT GET_FORMAT(TIME,'jis'); -- '%H:%i:%s' SELECT GET_FORMAT(TIME,'iso'); -- '%H:%i:%s' SELECT GET_FORMAT(TIME,'eur'); -- '%H.%i.%s' SELECT GET_FORMAT(TIME,'internal'); -- '%H%i%s'-- MySQL 拼凑日期、时间函数:makdedate(year,dayofyear), maketime(hour,minute,second)SELECT MAKEDATE(2017,31); -- '2017-01-31' SELECT MAKEDATE(2017,32); -- '2017-02-01'SELECT MAKETIME(19,52,35); -- '19:52:35'-- MySQL 时区(timezone)转换函数:convert_tz(dt,from_tz,to_tz)SELECT CONVERT_TZ('2017-06-05 19:54:12', '+08:00', '+00:00'); -- 2017-06-05 11:54:12-- MySQL (Unix 时间戳、日期)转换函数-- unix_timestamp(), unix_timestamp(date), from_unixtime(unix_timestamp), from_unixtime(unix_timestamp,format)-- 将具体时间时间转为timestampSELECT UNIX_TIMESTAMP();-- 当前时间的时间戳:1494815779SELECT UNIX_TIMESTAMP('2017-05-15');-- 指定日期的时间戳:1494777600SELECT UNIX_TIMESTAMP('2017-05-15 10:37:14');-- 指定日期时间的时间戳:1494815834-- 将时间戳转为具体时间SELECT FROM_UNIXTIME(1494815834);-- 2017-05-15 10:37:14SELECT FROM_UNIXTIME(1494815834, '%Y年%m月%d日 %h时%分:%s秒');-- 获取时间戳对应的格式化日期时间-- MySQL 时间戳(timestamp)转换、增、减函数SELECT TIMESTAMP('2017-05-15');-- 2017-05-15 00:00:00SELECT TIMESTAMP('2017-05-15 08:12:25', '01:01:01');-- 2017-05-15 09:13:26SELECT DATE_ADD('2017-05-15 08:12:25', INTERVAL 1 DAY);-- 2017-05-16 08:12:25SELECT TIMESTAMPADD(DAY, 1, '2017-05-15 08:12:25');-- 2017-05-16 08:12:25; MySQL timestampadd() 函数类似于 date_add()。SELECT TIMESTAMPDIFF(YEAR, '2017-06-01', '2016-05-15');-- -1SELECT TIMESTAMPDIFF(MONTH, '2017-06-01', '2016-06-15');-- -11SELECT TIMESTAMPDIFF(DAY, '2017-06-01', '2016-06-15');-- -351SELECT TIMESTAMPDIFF(HOUR, '2017-06-01 08:12:25', '2016-06-15 00:00:00');-- -8432SELECT TIMESTAMPDIFF(MINUTE, '2017-06-01 08:12:25', '2016-06-15 00:00:00');-- -505932SELECT TIMESTAMPDIFF(SECOND, '2017-06-01 08:12:25', '2016-06-15 00:00:00');-- -30355945
对于以上MySQL所有的日期时间函数处理相关内容,大家还有什么不明白的地方吗?或者想要了解更多相关,可以继续关注我们的行业资讯板块。
日期
时间
函数
时分
格式
处理
两个
功能
参数
月份
不同
分秒
天数
小写
小时
建议
部分
面的
英文
参考
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
青浦区工商软件开发排名靠前
用电脑当服务器
校园网络安全班会总结
本科网络安全毕业设计
实验4 数据库的安全性
网络安全老师对学生的评价
南充手机软件开发
陕西先通网络技术学院好吗
计算机网络技术网测
服务器怎么禁用登录账户
共享储物柜软件开发商
计算机网络技术算理科吗
杭州小程序软件开发公司有哪些
数据库技术初级培训教程
山东综合软件开发单价
安卓手机如何使用联想的服务器
软件开发沟通模型
乌克兰游戏用什么服务器
数据库所有表结构导出工具
华为网络技术售后电话
如何查找相同单元格的数据库
小主机做文件服务器
我的世界服务器生成方块指令
俄罗斯西部互联网科技
为诈骗提供服务器
湖北第三方软件开发报价
国产化软件开发路线
浪潮服务器管理口登录
u8初始化数据库的方法
充电桩网络安全