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_

nat123映射怎么用?超详细步骤,外网访问内网轻松搞定
nat123域名怎么用?两种方式轻松搞定
nat123怎么用?简单几步实现内网穿透
内网穿透工具对比:nat123、花生壳与轻量新选择
远程访问内网很简单:用对工具,一“箭”穿透
ngrok下载完全指南:从入门到获取客户端
内网远程桌面软件:穿透局域网边界的数字窗口
从外网远程访问内网服务器的完整方案
Windows Server 2008端口转发完全教程:netsh命令添加/查看/删除/重置
为什么三层交换机转发比Linux服务器快?转发表硬件加速的秘密