在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天前的记录、计算到期时间等。
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。
基本上就这些常用操作。掌握这些函数后,处理时间相关的查询和逻辑会更加得心应手。关键是理解每个函数的作用和参数格式,避免因格式错误导致结果异常。
