在 MySQL 中,日期计算是数据处理和分析中常见的需求。无论是计算两个日期之间的差值,还是对日期进行加减操作,MySQL 都提供了丰富的函数和操作符来满足这些需求。本文将详细介绍 MySQL 中常用的日期计算方法,包括日期加减、日期差值计算、日期格式化等。
日期加减计算
MySQL 提供了多种方式对日期进行加减运算,常用的函数包括 DATE_ADD()、DATE_SUB(),以及 +INTERVAL 和 -INTERVAL 操作符。
1. DATE_ADD() 函数
DATE_ADD() 函数用于对日期或时间进行加法运算。
语法:
DATE_ADD(date, INTERVAL value unit)
- date:需要运算的日期或时间。
- value:需要加减的数值。
- unit:时间单位(如 DAY、MONTH、YEAR 等)。
示例:
1.1 当前日期加上7天
SELECT DATE_ADD(CURDATE(), INTERVAL 7 DAY);
1.2 当前时间加2小时
SELECT DATE_ADD(NOW(), INTERVAL 2 HOUR);
2. DATE_SUB() 函数
DATE_SUB() 函数用于对日期或时间进行减法运算。
语法:
DATE_SUB(date, INTERVAL value unit)
示例:
2.1 当前日期减7天
SELECT DATE_SUB(CURDATE(), INTERVAL 7 DAY);
2.2 当前时间减2小时
SELECT DATE_SUB(NOW(), INTERVAL 2 HOUR);
3. 使用 + INTERVAL 和 - INTERVAL
除了 DATE_ADD() 和 DATE_SUB(),MySQL 还支持直接使用 + INTERVAL 和 - INTERVAL 进行日期运算。
示例:
3.1 当前日期加7天
SELECT CURDATE() + INTERVAL 7 DAY;
3.2 当前时间减2小时
SELECT NOW() - INTERVAL 2 HOUR;
日期差值计算
MySQL 提供了 DATEDIFF() 和 TIMESTAMPDIFF() 函数来计算两个日期之间的差值。
1. DATEDIFF() 函数
DATEDIFF() 函数用于计算两个日期之间的天数差。
语法:
DATEDIFF(date1, date2)
- date1 和 date2 是需要计算差值的两个日期。
- 返回值为 date1 - date2 的天数差。
示例:
计算 2023-10-30 和 2023-10-23 之间的天数差:
SELECT DATE_ADD(CURDATE(), INTERVAL 7 DAY);
2. TIMESTAMPDIFF() 函数
TIMESTAMPDIFF() 函数用于计算两个日期或时间之间的差值,支持多种时间单位。
语法:
TIMESTAMPDIFF(unit, start_date, end_date)
- unit:时间单位(如 DAY、MONTH、YEAR 等)。
- start_date 和 end_date 是需要计算差值的两个日期或时间。
示例:
2.1 计算两个日期之间的月份差:
SELECT TIMESTAMPDIFF(MONTH, '2023-01-01', '2023-10-01');
2.2 计算两个时间之间的小时差:
SELECT TIMESTAMPDIFF(HOUR, '2023-10-23 10:00:00', '2023-10-23 14:30:00');
日期格式化
MySQL 提供了 DATE_FORMAT() 函数,用于将日期或时间格式化为指定的字符串格式。
1. DATE_FORMAT() 函数
语法:
DATE_FORMAT(date, format)
- date:需要格式化的日期或时间。
- format:格式化字符串。
示例:
1.1 将当前日期格式化为 YYYY-MM-DD:
SELECT DATE_FORMAT(CURDATE(), '%Y-%m-%d');
1.2 将当前时间格式化为 HH:MM:SS:
SELECT DATE_FORMAT(NOW(), '%H:%i:%s');
其他常用日期函数
1. NOW() 和 CURDATE()
NOW():返回当前日期和时间。
- CURDATE():返回当前日期。
2. DAY()、MONTH() 和 YEAR()
- DAY(date):返回日期的天数部分。
- MONTH(date):返回日期的月份部分。
- YEAR(date):返回日期的年份部分
其他常用日期函数
MySQL 提供了丰富的日期计算函数和操作符,以下是本文的主要内容总结。
- 使用 DATE_ADD() 和 DATE_SUB() 进行日期加减运算。
- 使用 DATEDIFF() 和 TIMESTAMPDIFF() 计算日期差值。
- 使用 DATE_FORMAT() 格式化日期和时间。
- 掌握其他常用日期函数,如 NOW()、CURDATE()、DAY() 等。