mysql数据库中日期函数的操作_mysql数据库中时间处理函数应用

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) = 2025 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('2025-06-01', '2025-05-01') AS diff_days;

字符串与日期的相互转换

有时时间以字符串形式存储,或者需要将日期转为字符串参与拼接,这时就需要类型转换函数。

  • STR_TO_DATE(str, format):将字符串按格式解析为日期
  • DATE(date_str):尝试将字符串转为日期类型

例如将 '2025/05/20' 转为标准日期:

SELECT STR_TO_DATE('2025/05/20', '%Y/%m/%d');

注意格式符要与字符串匹配,否则返回 NULL。

基本上就这些常用操作。掌握这些函数后,处理时间相关的查询和逻辑会更加得心应手。关键是理解每个函数的作用和参数格式,避免因格式错误导致结果异常。