MySQL提供NOW()、CURDATE()、CURTIME()获取当前时间,支持YEAR()、MONTH()、DAY()等函数提取日期部分,DATE_FORMAT()格式化输出,DATE_ADD()和DATE_SUB()进行日期增减,DATEDIFF()计算日期差,STR_TO_DATE()实现字符串与日期转换,灵活应用于插入记录、统计查询与类型转换场景。

在MySQL数据库中,日期和时间的处理是日常开发中非常常见的需求。无论是记录用户注册时间、订单生成时间,还是进行数据统计分析,都离不开对时间字段的操作。MySQL提供了丰富的内置函数来帮助我们灵活地处理日期和时间。
获取当前时间
最基础的操作就是获取当前系统的时间。MySQL提供了几个常用的函数:
- NOW():返回当前日期和时间,格式为 'YYYY-MM-DD HH:MM:SS'
- CURDATE():只返回当前日期,格式为 'YYYY-MM-DD'
- CURTIME():只返回当前时间,格式为 'HH:MM:SS'
例如,插入一条记录时自动记录当前时间:
INSERT INTO orders (product, create_time) VALUES ('手机', NOW());日期的提取与格式化
有时候我们需要从一个日期时间字段中提取年、月、日等部分,或者将日期转换成特定格式展示。
- YEAR(date)、MONTH(date)、DAY(date):分别提取年、月、日
- HOUR(time)、MINUTE(time)、SECOND(time):提取时间部分
- DATE_FORMAT(date, format):按指定格式输出日期
比如统计某个月的订单数量:
SELECT COUNT(*) FROM orders WHERE YEAR(create_time) = 2024 AND MONTH(create_time) = 5;或格式化显示时间:
SELECT DATE_FORMAT(create_time, '%Y年%m月%d日 %H:%i') AS formatted_time FROM orders;日期的计算与增减
在实际业务中,经常需要对日期进行加减操作,比如查询7天前的记录、计算到期时间等。
基于Intranet/Internet 的Web下的办公自动化系统,采用了当今最先进的PHP技术,是综合大量用户的需求,经过充分的用户论证的基础上开发出来的,独特的即时信息、短信、电子邮件系统、完善的工作流、数据库安全备份等功能使得信息在企业内部传递效率极大提高,信息传递过程中耗费降到最低。办公人员得以从繁杂的日常办公事务处理中解放出来,参与更多的富于思考性和创造性的工作。系统力求突出体系结构简明
- DATE_ADD(date, INTERVAL expr unit):给日期增加指定间隔
- DATE_SUB(date, INTERVAL expr unit):从日期中减去指定间隔
- DATEDIFF(date1, date2):计算两个日期之间的天数差
示例:查询过去7天内的订单
SELECT * FROM orders WHERE create_time >= DATE_SUB(NOW(), INTERVAL 7 DAY);计算两个时间相差多少天:
SELECT DATEDIFF('2024-06-01', '2024-05-01') AS diff_days;字符串与日期的相互转换
有时时间以字符串形式存储,或者需要将日期转为字符串参与拼接,这时就需要类型转换函数。
- STR_TO_DATE(str, format):将字符串按格式解析为日期
- DATE(date_str):尝试将字符串转为日期类型
例如将 '2024/05/20' 转为标准日期:
SELECT STR_TO_DATE('2024/05/20', '%Y/%m/%d');注意格式符要与字符串匹配,否则返回 NULL。
基本上就这些常用操作。掌握这些函数后,处理时间相关的查询和逻辑会更加得心应手。关键是理解每个函数的作用和参数格式,避免因格式错误导致结果异常。









