MySQL 日期与时间函数详解
MySQL 数据库中的日期与时间函数是处理日期和时间数据的重要工具。这些函数可以用来格式化日期、计算时间差、获取当前日期和时间等。本文将详细介绍 MySQL 中常用的日期与时间函数,并辅以示例代码,帮助读者更好地理解和应用这些函数。
1. 获取当前日期和时间
在 MySQL 中,可以使用以下函数获取当前的日期和时间:
- `NOW()`: 返回当前的日期和时间。
- `CURDATE()`: 返回当前的日期,不包含时间。
- `CURTIME()`: 返回当前的时间,不包含日期。
sql
-- 获取当前日期和时间
SELECT NOW(), CURDATE(), CURTIME();
-- 输出结果:
-- 2023-04-01 14:30:00, 2023-04-01, 14:30:00
2. 日期格式化
MySQL 提供了多种函数用于格式化日期和时间:
- `DATE_FORMAT(date, format)`: 将日期按照指定的格式进行格式化。
- `STR_TO_DATE(str, format)`: 将字符串按照指定的格式转换为日期。
sql
-- 格式化日期
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s') AS formatted_date;
-- 输出结果:
-- 2023-04-01 14:30:00
-- 将字符串转换为日期
SELECT STR_TO_DATE('2023-04-01 14:30:00', '%Y-%m-%d %H:%i:%s') AS converted_date;
-- 输出结果:
-- 2023-04-01 14:30:00
3. 日期和时间计算
MySQL 提供了一系列函数用于日期和时间的计算:
- `DATE_ADD(date, interval expr unit)`: 在日期上加上指定的时间间隔。
- `DATE_SUB(date, interval expr unit)`: 在日期上减去指定的时间间隔。
- `TIMESTAMPADD(unit, number, datetime)`: 在时间戳上加上指定的时间间隔。
- `TIMESTAMPDIFF(unit, datetime1, datetime2)`: 计算两个日期之间的时间差。
sql
-- 日期计算
SELECT DATE_ADD(NOW(), INTERVAL 1 DAY) AS date_add, DATE_SUB(NOW(), INTERVAL 1 DAY) AS date_sub;
-- 输出结果:
-- date_add: 2023-04-02, date_sub: 2023-03-31
-- 时间戳计算
SELECT TIMESTAMPADD(MINUTE, 30, NOW()) AS timestamp_add, TIMESTAMPDIFF(MINUTE, NOW(), '2023-04-01 15:00:00') AS timestamp_diff;
-- 输出结果:
-- timestamp_add: 2023-04-01 15:30:00, timestamp_diff: 30
4. 日期和时间提取
MySQL 提供了以下函数用于从日期和时间中提取特定部分:
- `YEAR(date)`: 返回日期中的年份。
- `MONTH(date)`: 返回日期中的月份。
- `DAY(date)`: 返回日期中的天。
- `HOUR(time)`: 返回时间中的小时。
- `MINUTE(time)`: 返回时间中的分钟。
- `SECOND(time)`: 返回时间中的秒。
sql
-- 提取日期和时间部分
SELECT YEAR(NOW()) AS year, MONTH(NOW()) AS month, DAY(NOW()) AS day,
HOUR(NOW()) AS hour, MINUTE(NOW()) AS minute, SECOND(NOW()) AS second;
-- 输出结果:
-- year: 2023, month: 4, day: 1, hour: 14, minute: 30, second: 0
5. 日期和时间转换
MySQL 提供了以下函数用于日期和时间的转换:
- `DATE(date)`: 将字符串转换为日期。
- `TIME(time)`: 将字符串转换为时间。
- `DATETIME(datetime)`: 将字符串转换为日期和时间。
sql
-- 日期和时间转换
SELECT DATE('2023-04-01 14:30:00') AS date, TIME('14:30:00') AS time, DATETIME('2023-04-01 14:30:00') AS datetime;
-- 输出结果:
-- date: 2023-04-01, time: 14:30:00, datetime: 2023-04-01 14:30:00
6. 日期和时间比较
MySQL 提供了以下函数用于日期和时间的比较:
- `DATEcmp(date1, date2)`: 比较两个日期。
- `TIMESTAMPcmp(datetime1, datetime2)`: 比较两个日期和时间。
sql
-- 日期和时间比较
SELECT DATEcmp('2023-04-01', '2023-04-02') AS date_cmp, TIMESTAMPcmp(NOW(), '2023-04-01 14:30:00') AS datetime_cmp;
-- 输出结果:
-- date_cmp: -1 (第一个日期小于第二个日期), datetime_cmp: 0 (当前时间等于指定时间)
总结
MySQL 中的日期与时间函数为处理日期和时间数据提供了强大的功能。读者应该能够熟练地使用这些函数来处理日常的日期和时间操作。在实际应用中,合理运用这些函数可以大大提高数据库操作效率和准确性。
Comments NOTHING