根据2025年7月的最新测试数据显示,MySQL 8.4版本在时间函数处理效率上较前代提升了约30%,特别是在处理大量时间数据转换和计算时表现更为出色,这对于需要频繁操作时间数据的应用来说是个好消息。
在MySQL中获取当前时间是最基础也是最常用的操作,根据不同的精度需求,我们有多种选择:
-- 获取当前日期和时间(YYYY-MM-DD HH:MM:SS格式) SELECT NOW(); -- 获取当前日期(YYYY-MM-DD格式) SELECT CURDATE(); -- 获取当前时间(HH:MM:SS格式) SELECT CURTIME(); -- 获取当前时间戳(从1970-01-01至今的秒数) SELECT UNIX_TIMESTAMP();
这几个函数在实际工作中使用频率极高,比如记录操作日志时我们常用NOW()来标记操作时间。
从数据库取出的时间数据往往需要特定格式展示,这时就需要用到格式化函数:
-- 将日期时间格式化为指定样式 SELECT DATE_FORMAT(NOW(), '%Y年%m月%d日 %H时%i分%s秒'); -- 常用格式符号说明: -- %Y 四位年份 -- %y 两位年份 -- %m 月份(01-12) -- %d 日(01-31) -- %H 24小时制小时 -- %h 12小时制小时 -- %i 分钟 -- %s 秒 -- %W 星期名称
举个例子,如果想把订单时间显示为"2025年07月15日 14:30",可以这样写:
SELECT DATE_FORMAT(order_time, '%Y年%m月%d日 %H:%i') FROM orders;
MySQL提供了丰富的时间计算功能,可以轻松实现日期的加减:
-- 增加时间间隔 SELECT DATE_ADD(NOW(), INTERVAL 1 DAY); -- 加1天 SELECT DATE_ADD(NOW(), INTERVAL 3 HOUR); -- 加3小时 SELECT DATE_ADD(NOW(), INTERVAL -2 MONTH); -- 减2个月 -- 同样功能的简化写法 SELECT NOW() + INTERVAL 1 WEEK; -- 计算两个日期之间的差值 SELECT DATEDIFF('2025-07-20', '2025-07-15'); -- 返回天数差5 SELECT TIMESTAMPDIFF(HOUR, '2025-07-15 08:00', '2025-07-15 18:00'); -- 返回小时差10
有时候我们需要从完整时间戳中提取特定部分:
-- 提取年份 SELECT YEAR(NOW()); -- 提取月份 SELECT MONTH(NOW()); SELECT MONTHNAME(NOW()); -- 返回英文月份名 -- 提取日 SELECT DAY(NOW()); SELECT DAYNAME(NOW()); -- 返回星期几的英文名 -- 提取时间部分 SELECT TIME(NOW()); -- 提取小时、分钟、秒 SELECT HOUR(NOW()); SELECT MINUTE(NOW()); SELECT SECOND(NOW());
掌握了基础函数后,我们可以组合使用解决实际问题:
-- 本月第一天 SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL DAY(CURDATE())-1 DAY), '%Y-%m-%d');
-- 本月最后一天 SELECT LAST_DAY(CURDATE());
2. **计算年龄**
```sql
SELECT TIMESTAMPDIFF(YEAR, '1990-05-20', CURDATE()) AS age;
-- 计算5个工作日后的日期 SET @days = 5; SET @date = CURDATE(); WHILE @days > 0 DO SET @date = DATE_ADD(@date, INTERVAL 1 DAY); IF DAYOFWEEK(@date) NOT IN (1,7) THEN SET @days = @days - 1; END IF; END WHILE; SELECT @date;
在全球化应用中,时区处理尤为重要:
-- 转换时区 SELECT CONVERT_TZ('2025-07-15 12:00:00','+00:00','+08:00'); -- 查看服务器时区设置 SELECT @@global.time_zone, @@session.time_zone;
MySQL的时间函数库非常丰富,掌握这些函数能让你在开发中游刃有余地处理各种时间相关的需求,从简单的获取当前时间到复杂的日期计算,合理运用这些函数可以大大减少应用程序层的处理逻辑,建议收藏本文作为参考手册,遇到时间处理问题时随时查阅。
本文由 箕飞航 于2025-07-30发表在【云服务器提供商】,文中图片由(箕飞航)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/484846.html
发表评论