[功能分类] MySQL日期与时间处理函数有哪些?

原创创始人 分类:热门问答 1

在数据库操作中,对日期和时间的精确处理至关重要。MySQL提供了丰富的内置函数以满足各类日期、时间和日期时间相关的计算需求。

从获取当前日期时间(如NOW()和CURRENT_DATE()),到格式化显示(DATE_FORMAT()和STR_TO_DATE()),以及进行复杂的日期计算(DATE_ADD(), DATE_SUB()和DATEDIFF()等),这些函数极大地简化了数据处理流程。

此外,MySQL还支持日期部分提取(DAY(), MONTH(), YEAR()等)、日期时间转换(FROM_UNIXTIME(), UNIX_TIMESTAMP())、日期判断(DAYOFWEEK(), DAYOFMONTH(), DAYOFYEAR())等功能。本文将详细解析这些MySQL日期时间处理函数的用法,并通过实例展示如何在实际场景中灵活运用。

1. 获取当前日期和时间

函数 描述 使用方法
NOW() 返回当前的日期和时间 SELECT NOW();
CURRENT_TIMESTAMP 或 CURRENT_TIMESTAMP() 同 NOW(),返回当前日期和时间 SELECT CURRENT_TIMESTAMP();
CURDATE() 或 CURRENT_DATE() 返回当前日期 SELECT CURDATE();
CURTIME() 或 CURRENT_TIME() 返回当前时间 SELECT CURTIME();

2. 日期格式化

函数 描述 使用方法
DATE_FORMAT(date, format) 按指定格式显示日期/时间值 SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s');
STR_TO_DATE(str, format) 将字符串按指定格式转换为日期 SELECT STR_TO_DATE('2022-12-31', '%Y-%m-%d');

3. 日期计算

函数 描述 使用方法
DATE_ADD(date, INTERVAL expr unit) 在日期上加上一个时间间隔 SELECT DATE_ADD(NOW(), INTERVAL 1 MONTH);
DATE_SUB(date, INTERVAL expr unit) 从日期中减去一个时间间隔 SELECT DATE_SUB(NOW(), INTERVAL 1 DAY);
DATEDIFF(date1, date2) 返回两个日期之间的天数差 SELECT DATEDIFF('2023-01-01', '2022-12-01');
TIMESTAMPDIFF(unit, datetime_expr1, datetime_expr2) 返回两个日期时间表达式的差值 SELECT TIMESTAMPDIFF(MONTH, '2022-01-01', '2022-12-31');

4. 日期提取

函数 描述 使用方法
DAY(date) 提取日期的日部分 SELECT DAY('2022-12-31');
MONTH(date) 提取日期的月部分 SELECT MONTH('2022-12-31');
YEAR(date) 提取日期的年部分 SELECT YEAR('2022-12-31');
HOUR(time) 提取时间的小时部分 SELECT HOUR('14:30:00');
MINUTE(time) 提取时间的分钟部分 SELECT MINUTE('14:30:00');
SECOND(time) 提取时间的秒部分 SELECT SECOND('14:30:00');
WEEK(date) 或 WEEKOFYEAR(date) 返回日期所在的年份中的周数 SELECT WEEK('2022-12-31');

5. 日期比较

函数 描述 使用方法(注:MySQL不支持DATE_CMP函数)
DATE_CMP(date1, date2) 比较两个日期值(使用<, >, =等操作符替代) SELECT (date1 > date2) - (date1 < date2) AS cmp_result;

6. 日期时间转换

函数 描述 使用方法
FROM_UNIXTIME(unix_timestamp) 将UNIX时间戳转换为日期时间格式 SELECT FROM_UNIXTIME(1609459200);
UNIX_TIMESTAMP(date) 或 UNIX_TIMESTAMP() 返回日期时间值的UNIX时间戳或当前的UNIX时间戳 SELECT UNIX_TIMESTAMP(NOW());

7. 日期判断

函数 描述 使用方法
DAYOFWEEK(date) 返回日期是星期几(1 = 周日,2 = 周一,...,7 = 周六) SELECT DAYOFWEEK('2022-12-31');
DAYOFMONTH(date) 返回日期是一个月中的第几天(1 到 31) SELECT DAYOFMONTH('2022-12-31');
DAYOFYEAR(date) 返回日期是一年中的第几天(1 到 366) SELECT DAYOFYEAR('2022-12-31');

猜你喜欢

领取相关Java架构师视频资料

网络安全学习平台视频资料