MySQL日期函数应用全解析

mysql sql日期函数大全

时间:2025-07-12 10:09


MySQL SQL日期函数大全:全面解析与实战应用 在数据管理和分析中,日期和时间的处理至关重要

    MySQL作为一款广泛使用的关系型数据库管理系统,提供了丰富的日期函数来满足各种日期和时间处理需求

    本文将全面介绍MySQL中的日期函数,包括获取当前日期和时间、提取日期和时间部分、日期和时间的计算、格式化以及比较与判断函数,并通过实战案例展示这些函数的应用

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

    这个函数在需要同时获取当前日期和时间时非常有用

     sql SELECT NOW(); 输出结果类似于`2025-07-1214:30:45`,表示当前的中国北京时间

     2. CURDATE() / CURRENT_DATE() `CURDATE()`和`CURRENT_DATE()`函数用于返回当前的日期,格式为`YYYY-MM-DD`

    这两个函数是等价的,可以根据个人喜好选择使用

     sql SELECT CURDATE(); 输出结果类似于`2025-07-12`

     3. CURTIME() / CURRENT_TIME() `CURTIME()`和`CURRENT_TIME()`函数用于返回当前的时间,格式为`HH:MM:SS`

    同样,这两个函数也是等价的

     sql SELECT CURTIME(); 输出结果类似于`14:30:45`

     4. UTC_DATE() / UTC_TIME() `UTC_DATE()`函数返回当前的UTC日期(不包含时间),而`UTC_TIME()`函数返回当前的UTC时间(不包含日期)

    这两个函数在处理跨时区数据时非常有用

     sql SELECT UTC_DATE();-- 返回UTC日期 SELECT UTC_TIME();-- 返回UTC时间 5. SYSDATE() `SYSDATE()`函数同样用于返回当前的日期和时间,格式为`YYYY-MM-DD HH:MM:SS`

    与`NOW()`不同的是,`SYSDATE()`在函数执行时获取时间,而`NOW()`在语句开始执行时获取时间

    这在需要精确到函数执行瞬间的场景中非常有用

     sql SELECT SYSDATE(); 二、提取日期和时间部分信息 1. YEAR(), MONTH(), DAY() `YEAR(date)`、`MONTH(date)`和`DAY(date)`函数分别用于提取日期中的年份、月份和天数部分

     sql SELECT YEAR(2025-07-12);-- 输出:2025 SELECT MONTH(2025-07-12); -- 输出:7 SELECT DAY(2025-07-12);-- 输出:12 2. HOUR(), MINUTE(), SECOND() `HOUR(time)`、`MINUTE(time)`和`SECOND(time)`函数分别用于提取时间中的小时数、分钟数和秒数部分

     sql SELECT HOUR(14:30:45);-- 输出:14 SELECT MINUTE(14:30:45); -- 输出:30 SELECT SECOND(14:30:45); -- 输出:45 3. WEEKDAY(), DAYNAME(), MONTHNAME() `WEEKDAY(date)`函数返回日期对应的星期索引(0表示星期一,6表示星期日),`DAYNAME(date)`函数返回日期对应的星期名称,而`MONTHNAME(date)`函数返回日期对应的月份名称

     sql SELECT WEEKDAY(2025-07-12);-- 输出: 星期六对应的索引值(具体值根据MySQL内部实现而定) SELECT DAYNAME(2025-07-12);-- 输出: Saturday SELECT MONTHNAME(2025-07-12); -- 输出: July 4. QUARTER() `QUARTER(date)`函数返回日期所在的季度(1-4)

     sql SELECT QUARTER(2025-07-12); -- 输出:3 三、日期和时间的计算函数 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(2025-07-12, INTERVAL7 DAY);-- 输出:2025-07-19 SELECT DATE_SUB(2025-07-12, INTERVAL1 MONTH); -- 输出:2025-06-12 `ADDDATE()`和`SUBDATE()`函数是`DATE_ADD()`和`DATE_SUB()`的同义词,功能相同

     2. DATEDIFF() `DATEDIFF(date1, date2)`函数返回两个日期之间相差的天数

    `date1`是结束日期,`date2`是开始日期

     sql SELECT DATEDIFF(2025-07-12, 2025-07-01); -- 输出:11 3. TIMESTAMPDIFF() `TIMESTAMPDIFF(unit, datetime1, datetime2)`函数返回两个日期时间之间的间隔,`unit`可以是YEAR、MONTH、DAY、HOUR、MINUTE、SECOND等

     sql SELECT TIMESTAMPDIFF(DAY, 2025-07-01, 2025-07-12); -- 输出:11 SELECT TIMESTAMPDIFF(HOUR, 2025-07-1200:00:00, 2025-07-1212:00:00); -- 输出:12 4. LAST_DAY() `LAST_DAY(date)`函数返回指定月份的最后一天

     sql SELECT LAST_DAY(2025-07-12); -- 输出:2025-07-31 四、日期和时间的格式化函数 1. DATE_FORMAT(), TIME_FORMAT() `DATE_FORMAT(date, format)`和`TIME_FORMAT(time, format)`函数分别用于将日期和时间按照指定的格式进行格式化

    常用的格式代码包括:`%Y`(四位年份)、`%y`(两位年份)、`%m`(两位月份)、`%b`(月份缩写)、`%M`(月份全称)、`%d`(两位日期)、`%H`(24小时制小时数)、`%h`(12小时制小时数)、`%i`(分钟数)、`%s`(秒数)等

     sql SELECT DATE_FORMAT(NOW(), %Y-%m-%d %H:%i:%s); -- 输出类似于:2025-07-1214:30:45 SELECT TIME_FORMAT(CURTIME(), %h:%i:%s %p);-- 输出类似于:02:30:45 PM(具体输出取决于当前时间) 2. STR_TO_DATE(), FROM_UNIXTIME(), UNIX_TIMESTAMP() `STR_TO_DATE(str, format)`函数用于将字符串转换为日期时间格式,`FROM_UNIXTIME(unix_timestamp, format)`函数用于将UNIX时间戳转换为日期时间格式,而`UNIX_TIMESTAMP(datetime)`函数则用于将日期时间转换为UNIX时间戳

     sql SELECT STR_TO_DATE(12-07-2025, %d-%m-%Y);-- 输出:2025-07-12 SELECT FROM_UNIXTIME(1689273600); -- 输出:2025-07-1200:00:00(