
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日期函数全解析,轻松处理时间数据
MySQL数据库表结构轻松复制技巧这个标题简洁明了,突出了“MySQL数据库”和“复制表结
MySQL服务崩溃?快速解决无法启动的秘诀!
MySQL TABLOCKX:深入解析表级锁
MySQL IO密集:优化策略揭秘
MySQL闪回功能解析:数据恢复的利器?
MySQL技巧:如何判断数字字段是否为空值
MySQL数据库表结构轻松复制技巧这个标题简洁明了,突出了“MySQL数据库”和“复制表结
MySQL服务崩溃?快速解决无法启动的秘诀!
MySQL TABLOCKX:深入解析表级锁
MySQL IO密集:优化策略揭秘
MySQL闪回功能解析:数据恢复的利器?
基于MySQL点餐系统设计的论文示意图解析
MySQL字段转换技巧:轻松变更为TEXT类型
MySQL多端口并行启动,轻松管理数据库服务这个标题既体现了“mysql”这一关键词,又明
Unity3D与MySQL数据库联动教程这个标题简洁明了,直接点明了文章的核心内容,即介绍如
Java实现MySQL在线编辑器功能探秘
MySQL数据库:垂直与水平拆分策略解析