MySQL 数据库 日期与时间函数详解

MySQL 数据库阿木 发布于 20 天前 6 次阅读


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 中的日期与时间函数为处理日期和时间数据提供了强大的功能。读者应该能够熟练地使用这些函数来处理日常的日期和时间操作。在实际应用中,合理运用这些函数可以大大提高数据库操作效率和准确性。