你好,我是猿java
点击关注公众号👇,获取:大厂简历指导和加技术群深度讨论!
在 MySQL中,提供了很多日期和时间函数,那么,在实际工作中,我们该如何选择?这篇文章,我们一起来聊一聊。
从整体上看,MySQL的日期和时间函数可以分为六大类:获取当前日期和时间、提取日期和时间的特定部分、格式化日期和时间、日期和时间的算术操作、提取日期的部分和Unix 时间戳相关函数等。
1. 获取当前日期和时间
获取当前日期和时间的函数包含以下几个常用函数:
NOW()
/ CURRENT_TIMESTAMP
作用:返回当前的日期和时间。 示例: SELECT NOW();
-- 输出格式例如:2025-01-05 14:30:00复制
CURDATE()
/ CURRENT_DATE
作用:返回当前的日期。 示例: SELECT CURDATE();
-- 输出格式例如:2025-01-05复制
CURTIME()
/ CURRENT_TIME
作用:返回当前的时间。 示例: SELECT CURTIME();
-- 输出格式例如:14:30:00复制
2. 提取日期和时间的特定部分
提取日期和时间的特定部分的常用函数包含以下几个:
YEAR(date)
作用:提取年份。 示例: SELECT YEAR('2025-01-25');
-- 输出:2023复制
MONTH(date)
作用:提取月份。 示例: SELECT MONTH('2025-01-25');
-- 输出:10复制
DAY(date)
作用:提取日期中的天。 示例: SELECT DAY('2025-01-25');
-- 输出:5复制
HOUR(time)
、MINUTE(time)
、SECOND(time)
作用:分别提取时间中的小时、分钟和秒。 示例: SELECT HOUR('14:30:00'), MINUTE('14:30:00'), SECOND('14:30:00');
-- 输出:14 30 00复制
3. 格式化日期和时间
格式化日期和时间的常用函数包含以下几个:
DATE_FORMAT(date, format)
作用:按照指定格式格式化日期/时间。 常用格式符: %Y
年份(四位)%m
月份(两位)%d
日(两位)%H
小时(24小时制)%i
分钟%s
秒示例: SELECT DATE_FORMAT(NOW(), '%Y年%m月%d日 %H:%i:%s');
-- 输出格式例如:2025年01月15日 14:30:00复制
STR_TO_DATE(string, format)
作用:将字符串按照指定格式转换为日期/时间类型。 示例: SELECT STR_TO_DATE('15-01-2025', '%d-%m-%Y');
-- 输出:2025-01-25复制
4. 日期和时间的算术操作
DATE_ADD(date, INTERVAL expr unit)
作用:在日期上添加指定的时间间隔。 示例: SELECT DATE_ADD('2025-01-15', INTERVAL 10 DAY);
-- 输出:2025-01-25复制
DATE_SUB(date, INTERVAL expr unit)
作用:从日期中减去指定的时间间隔。 示例: SELECT DATE_SUB('2025-03-25', INTERVAL 2 MONTH);
-- 输出:2025-01-25复制
DATEDIFF(date1, date2)
作用:返回两个日期之间的天数差异。 示例: SELECT DATEDIFF('2025-01-25', '2025-01-15');
-- 输出:10复制
TIMESTAMPDIFF(unit, datetime1, datetime2)
作用:返回两个日期之间指定单位的差异。 单位包括:SECOND、MINUTE、HOUR、DAY、MONTH、YEAR 等。 示例: SELECT TIMESTAMPDIFF(DAY, '2025-01-15', '2025-01-25');
-- 输出:10
SELECT TIMESTAMPDIFF(HOUR, '2025-01-25 10:00:00', '2025-01-25 14:30:00');
-- 输出:4复制
5. 提取日期的部分
EXTRACT(part FROM date)
作用:提取日期或时间的特定部分。 可提取部分:YEAR、MONTH、DAY、HOUR、MINUTE、SECOND 等。 示例: SELECT EXTRACT(YEAR FROM '2025-01-25'), EXTRACT(MONTH FROM '2025-01-25');
-- 输出:2025 01复制
6. Unix 时间戳相关函数
UNIX_TIMESTAMP()
作用:返回当前时间的 Unix 时间戳(秒数)。 示例: SELECT UNIX_TIMESTAMP();
-- 输出:例如 1696453800复制
FROM_UNIXTIME(unix_timestamp, format)
作用:将 Unix 时间戳转换为日期和时间格式。 示例: SELECT FROM_UNIXTIME(1696453800, '%Y-%m-%d %H:%i:%s');
-- 输出:2025-01-25 14:30:00复制
7. 总结
本文我们分析了 MySQL 中常用的日期和时间函数,它们在日常工作中有广泛的使用,不过在使用中我们需要注意以下两点:
日期格式:确保日期和时间的格式符合 MySQL 的标准格式(如 YYYY-MM-DD
或YYYY-MM-DD HH:MM:SS
),否则可能导致函数解析错误。时区设置: NOW()
和相关函数受服务器时区设置影响,确保时区配置正确以获取准确的时间。
文章转载自猿java,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【MySQL 30周年庆】MySQL 8.0 OCP考试限时免费!教你免费领考券
墨天轮小教习
1728次阅读
2025-04-25 18:53:11
MySQL 30 周年庆!MySQL 8.4 认证免费考!这次是认真的。。。
严少安
638次阅读
2025-04-25 15:30:58
墨天轮个人数说知识点合集
JiekeXu
467次阅读
2025-04-01 15:56:03
MySQL数据库当前和历史事务分析
听见风的声音
456次阅读
2025-04-01 08:47:17
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
396次阅读
2025-04-17 17:02:24
MySQL 9.3 正式 GA,我却大失所望,新特性亮点与隐忧并存?
JiekeXu
371次阅读
2025-04-15 23:49:58
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
345次阅读
2025-04-15 14:48:05
openHalo问世,全球首款基于PostgreSQL兼容MySQL协议的国产开源数据库
严少安
318次阅读
2025-04-07 12:14:29
记录MySQL数据库的一些奇怪的迁移需求!
陈举超
214次阅读
2025-04-15 15:27:53
[MYSQL] 服务器出现大量的TIME_WAIT, 每天凌晨就清零了
大大刺猬
189次阅读
2025-04-01 16:20:44