MySQL日期函数全解析,轻松处理时间数据
mysql常用日期函数大全

首页 2025-07-30 08:07:50



MySQL常用日期函数大全:解锁数据处理的高效秘籍 在数据库管理与数据分析的广阔领域中,日期和时间处理无疑是至关重要的一环

    MySQL,作为广泛应用的开源关系型数据库管理系统,提供了丰富的日期和时间函数,帮助开发者轻松应对各种日期数据处理需求

    掌握这些函数不仅能提升数据处理效率,还能显著优化查询性能,使你的数据库操作更加得心应手

    本文将深入解析MySQL中最为常用且功能强大的日期函数,带你领略日期处理的高效之道

     一、基础日期时间函数 1. NOW() `NOW()`函数返回当前的日期和时间,格式为`YYYY-MM-DD HH:MM:SS`

    它是获取当前系统时间最直接的方法,常用于记录数据插入或更新的时间戳

     sql SELECT NOW(); 2. CURDATE() 和 CURTIME() -`CURDATE()`返回当前日期,格式为`YYYY-MM-DD`

     -`CURTIME()`返回当前时间,格式为`HH:MM:SS`

     sql SELECT CURDATE(), CURTIME(); 3. UTC_DATE() 和 UTC_TIME() 与`CURDATE()`和`CURTIME()`类似,但返回的是协调世界时(UTC)下的日期和时间,这对于处理跨时区数据非常有用

     sql SELECT UTC_DATE(), UTC_TIME(); 二、日期和时间提取函数 1. EXTRACT() `EXTRACT()`函数允许从日期或时间值中提取特定的部分,如年、月、日、小时等

    其语法为`EXTRACT(unit FROM date)`,其中`unit`可以是`YEAR`、`MONTH`、`DAY`、`HOUR`等

     sql SELECT EXTRACT(YEAR FROM 2023-10-05) AS year, EXTRACT(MONTH FROM 2023-10-05) AS month, EXTRACT(DAY FROM 2023-10-05) AS day; 2. DATE_FORMAT() `DATE_FORMAT()`函数提供了极大的灵活性,允许你按照指定的格式显示日期和时间

    其语法为`DATE_FORMAT(date, format)`,其中`format`字符串定义了输出格式

     sql SELECT DATE_FORMAT(2023-10-0514:30:00, %Y-%m-%d %H:%i:%s) AS formatted_date; 常用的格式化字符包括: -`%Y` -4位数的年份 -`%y` -2位数的年份 -`%m` - 月份(01-12) -`%d` - 日期(01-31) -`%H` - 小时(00-23) -`%i` - 分钟(00-59) -`%s` - 秒(00-59) 3. DAY(), MONTH(), `YEAR()` 这些函数分别提取日期中的日、月、年部分,返回值分别为整数

     sql SELECT DAY(2023-10-05) AS day, MONTH(2023-10-05) AS month, YEAR(2023-10-05) AS year; 三、日期和时间计算函数 1. DATE_ADD() 和 DATE_SUB() -`DATE_ADD(date, INTERVAL expr unit)`在日期上加上指定的时间间隔

     -`DATE_SUB(date, INTERVAL expr unit)`从日期上减去指定的时间间隔

     `expr`可以是正数或负数,`unit`可以是`SECOND`、`MINUTE`、`HOUR`、`DAY`、`MONTH`、`YEAR`等

     sql SELECT DATE_ADD(2023-10-05, INTERVAL7 DAY) AS new_date; SELECT DATE_SUB(2023-10-05, INTERVAL1 MONTH) AS new_date; 2. ADDDATE() 和 SUBDATE() 这两个函数是`DATE_ADD()`和`DATE_SUB()`的同义词,功能完全相同

     sql SELECT ADDDATE(2023-10-05, INTERVAL10 DAY) AS new_date; SELECT SUBDATE(2023-10-05, INTERVAL2 MONTH) AS new_date; 3. DATEDIFF() `DATEDIFF(date1, date2)`返回两个日期之间的天数差,结果为正数表示`date1`在`date2`之后,负数反之

     sql SELECT DATEDIFF(2023-10-10, 2023-10-05) AS days_diff; 4. TIMESTAMPDIFF() `TIMESTAMPDIFF(unit, datetime_expr1, datetime_expr2)`返回两个日期时间值之间的差异,`unit`可以是`SECOND`、`MINUTE`、`HOUR`、`DAY`、`MONTH`、`YEAR`等

     sql SELECT TIMESTAMPDIFF(DAY, 2023-10-01, 2023-10-10) AS days_diff; 四、日期和时间操作函数 1. MAKEDATE() `MAKEDATE(year, day_of_year)`根据给定的年份和一年中的第几天生成日期

    注意,这里的`day_of_year`是从1开始的

     sql SELECT MAKEDATE(2023,250) AS date; 2. MAKETIME() `MAKETIME(hour, minute, second)`根据给定的小时、分钟和秒生成时间

     sql SELECT MAKETIME(14,30,0) AS time; 3. STR_TO_DATE() `STR_TO_DATE(str, format)`将字符串按照指定的格式转换为日期时间值

    这对于处理非标准格式的日期字符串非常有用

     sql SELECT STR_TO_DATE(05/10/2023, %d/%m/%Y) AS date; 4. DATE_FORMAT() 的逆操作:`DATE()` 和`TIME()` 虽然`DATE_FORMAT()`主要用于格式化输出,但`DATE(date)`和`TIME(time)`函数可以从日期时间值中提取日期部分和时间部分,返回仅包含日期或时间的字符串

     sql SELECT DATE(2023-10-0514:30:00) AS date_part, TIME(2023-10-0514:30:00) AS time_part; 五、日期和时间判断函数 1. WEEKDAY() `WEEKDAY(date)`返回日期是星期几,0表示星期一,6表示星期日

     sql SELECT WEEKDAY(2023-10-05) AS weekday; 2. DAYOFWEEK() `DAYOFWEEK(date)`也返回日期是星期几,但返回值从1(星期日)到7(星期六)

     sql SELECT DAYOFWEEK(2023-10-05) AS day_of_week; 3. DAYOFYEAR() `DAYOFYEAR(date)`返回日期是一年中的第几天,范围从1到366(闰年)

     sql SELECT DAYOFYEAR(2023-10-05) AS day_of_year; 4. WEEK() 和 WEEKOFYEAR() 这两个函数都返回日期所在的周数,但`WEEK()`函数可以根据`mode`参数调整周的起始日和范围

    `WEEKOFYEAR()`是`WEEK()`的一个简化版,不使用`mode`参数

     sql SELECT WEEK(2023-10-05) AS week, WEEKOFYEAR(2023-10-05) AS week_of_year; 5. DAYNAME() 和 MONTHNAME() -`DAYNAME(date)`返回日期的星期名称

     -`MONTHNAME(date)`返回日期的月份名称

     sql SELECT DAYNAME(2023-10-05) AS day_name, MONTHNAME(2023-10-05) AS month_

MySQL连接就这么简单!本地远程、编程语言连接方法一网打尽
还在为MySQL日期计算头疼?这份加一天操作指南能解决90%问题
MySQL日志到底在哪里?Linux/Windows/macOS全平台查找方法在此
MySQL数据库管理工具全景评测:从Workbench到DBeaver的技术选型指南
MySQL密码忘了怎么办?这份重置指南能救急,Windows/Linux/Mac都适用
你的MySQL为什么经常卡死?可能是锁表在作怪!快速排查方法在此
MySQL单表卡爆怎么办?从策略到实战,一文掌握「分表」救命技巧
清空MySQL数据表千万别用错!DELETE和TRUNCATE这个区别可能导致重大事故
你的MySQL中文排序一团糟?记住这几点,轻松实现准确拼音排序!
别再混淆Hive和MySQL了!读懂它们的天壤之别,才算摸到大数据的门道