| 函数 | 
格式 | 
示例 | 
返回数据 | 
NOW() | 
YYYY-MM-dd HH:mm:ss | 
SELECT NOW(); | 
2025-07-24 21:53:21 | 
CURRENT_DATE() | 
YYYY-MM-dd | 
SELECT CURRENT_DATE(); | 
2025-07-24 | 
CURRENT_TIME() | 
HH:mm:ss | 
SELECT CURRENT_TIME(); | 
21:57:06 | 
CURRENT_TIMESTAMP() | 
YYYY-MM-dd HH:mm:ss | 
SELECT CURRENT_TIMESTAMP(); | 
2025-07-24 21:57:34 | 
UTC_DATE() | 
YYYY-MM-dd | 
SELECT UTC_DATE(); | 
2025-07-24 | 
UTC_TIME() | 
HH:mm:ss | 
SELECT UTC_TIME(); | 
14:00:45 | 
UTC_TIMESTAMP() | 
YYYY-MM-dd HH:mm:ss | 
SELECT UTC_TIMESTAMP(); | 
2025-07-24 14:00:45 | 
日期时间提取
函数 | 
说明 | 
示例 | 
结果 | 
YEAR(date) | 
提取年份 | 
SELECT YEAR(‘2025-07-24 08:00:00.1’); | 
2025 | 
MONTH(date) | 
提取月份 | 
SELECT MONTH(‘2025-07-24 08:00:00.1’); | 
7 | 
DAY(date) | 
提取日(1-31) | 
SELECT DAY(‘2025-07-24 08:00:00.1’); | 
24 | 
HOUR(date) | 
提取小时 | 
SELECT HOUR(‘2025-07-24 08:00:00.1’); | 
8 | 
MINUTE(date) | 
提取分钟 | 
SELECT MINUTE(‘2025-07-24 08:00:00.1’); | 
0 | 
SECOND(date) | 
提取秒 | 
SELECT SECOND(‘2025-07-24 08:00:00.1’); | 
0 | 
MICROSECOND(date) | 
提取微秒 | 
SELECT MICROSECOND(‘2025-07-24 08:00:00.1’); | 
100000 | 
WEEK(date) | 
提取年中的第几周(周日作为第一周开始计算,类似于%U) | 
SELECT SECOND(‘2025-07-24 08:00:00.1’); | 
29 | 
DAYOFWEEK(date) | 
提取周的第几天(1=周日,7=周六) | 
SELECT DAYOFWEEK(‘2025-07-24 08:00:00.1’); | 
5 | 
DAYOFMONTH(date) | 
提取月的第几天 | 
SELECT DAYOFMONTH(‘2025-07-24 08:00:00.1’); | 
24 | 
DAYOFYEAR(date) | 
提取年的第几天 | 
SELECT DAYOFYEAR(‘2025-07-24 08:00:00.1’); | 
205 | 
QUARTER(date) | 
提取季度 | 
SELECT QUARTER(‘2025-07-24 08:00:00.1’); | 
3 | 
DAYNAME(date) | 
提取星期名称 | 
SELECT DAYNAME(‘2025-07-24 08:00:00.1’); | 
Thursday | 
MONTHNAME(date) | 
提取秒 | 
SELECT MONTHNAME(‘2025-07-24 08:00:00.1’); | 
July | 
日期时间计算
日期加减
SELECT DATE_ADD(\'2025-07-24 08:00:00.1\', INTERVAL 1 DAY); SELECT DATE_SUB(\'2025-07-24 08:00:00.1\', INTERVAL 1 DAY); 
单位
单位 | 
说明 | 
示例 | 
YEAR | 
年 | 
SELECT DATE_ADD(‘2025-07-24 08:00:00.1’, INTERVAL 1 YEAR); | 
QUARTER | 
季度 | 
SELECT DATE_ADD(‘2025-07-24 08:00:00.1’, INTERVAL 1 QUARTER); | 
MONTH | 
月 | 
SELECT DATE_ADD(‘2025-07-24 08:00:00.1’, INTERVAL 1 MONTH); | 
WEEK | 
周 | 
SELECT DATE_ADD(‘2025-07-24 08:00:00.1’, INTERVAL 1 WEEK); | 
DAY | 
天 | 
SELECT DATE_ADD(‘2025-07-24 08:00:00.1’, INTERVAL 1 DAY); | 
HOUR | 
小时 | 
SELECT DATE_ADD(‘2025-07-24 08:00:00.1’, INTERVAL 1 HOUR); | 
MINUTE | 
分 | 
SELECT DATE_ADD(‘2025-07-24 08:00:00.1’, INTERVAL 1 MINUTE); | 
SECOND | 
秒 | 
SELECT DATE_ADD(‘2025-07-24 08:00:00.1’, INTERVAL 1 SECOND); | 
MICROSECOND | 
微秒 | 
SELECT DATE_ADD(‘2025-07-24 08:00:00.1’, INTERVAL 1 MICROSECOND); | 
日期时间格式化
SELECT DATE_FORMAT(NOW(), \'%Y-%m-%d\') AS fmt1,  DATE_FORMAT(NOW(), \'%d/%m/%Y\') AS fmt2,  DATE_FORMAT(NOW(), \'%W, %M %e, %Y\') AS fmt3,  DATE_FORMAT(NOW(), \'%H:%i:%s\') AS fmt4,  DATE_FORMAT(NOW(), \'%l:%i %p\') AS fmt5; 
符号 | 
说明 | 
示例 | 
%Y | 
4位年份 | 
2025 | 
%y | 
2位年份 | 
25 | 
%m | 
月份(00-12) | 
07 | 
%c | 
月份(0-12) | 
7 | 
%M | 
月份名称 | 
July | 
%b | 
月份简写 | 
Jul | 
%d | 
日(00-31) | 
01 | 
%e | 
日(0-31) | 
1 | 
%D | 
英文后缀的日 | 
1st | 
%H | 
小时(00-23) | 
01 | 
%h | 
小时(01-12) | 
01 | 
%l | 
小时(01-12) | 
01 | 
%i | 
分钟 (00-59) | 
01 | 
%s | 
秒(00-59) | 
01 | 
%f | 
微秒 (000000-999999) | 
 | 
%p | 
AM/PM | 
PM | 
%W | 
星期名称 | 
Tuesday | 
%a | 
星期缩写 | 
Tue | 
%w | 
星期数字 (0=周日) | 
4 | 
%U | 
周 (00-53) 周日开始 | 
29 | 
%u | 
周 (00-53) 周一开始 | 
30 | 
日期时间转换
函数 | 
说明 | 
示例 | 
STR_TO_DATE(str, format) | 
字符串转日期 | 
SELECT STR_TO_DATE(‘24,07,2025’, ‘%d,%m,%Y’); | 
FROM_UNIXTIME(ts, format) | 
Unix时间戳转日期 | 
SELECT FROM_UNIXTIME(1753286400, ‘%Y-%m-%d’); | 
UNIX_TIMESTAMP(date) | 
转为Unix时间戳 | 
SELECT UNIX_TIMESTAMP(NOW()), UNIX_TIMESTAMP(‘2025-07-24’); | 
日期时间比较
函数 | 
说明 | 
示例 | 
DATEDIFF(date1, date2) | 
相差天数(date1-date2) | 
SELECT DATEDIFF(‘2025-07-24’, ‘2025-07-26’); -2 | 
TIMEDIFF(time1, time2) | 
相差小时(time1-time2) | 
SELECT TIMEDIFF(‘2025-07-24 00:00:00’, ‘2025-07-24 01:00:00’); -1 | 
TIMESTAMPDIFF(unit, date1, date2) | 
相差时间,单位unit,date2-date1 | 
SELECT TIMESTAMPDIFF(MINUTE, ‘2025-07-24 00:00:00’, ‘2025-07-24 01:00:00’); 60 | 
特殊日期函数
函数 | 
说明 | 
示例 | 
LAST_DAY(date) | 
月份最后一天 | 
SELECT LAST_DAY(‘2025-07-24 00:00:00’); 2025-07-31 | 
MAKEDATE(year, dayofyear) | 
根据年+天数创建日期 | 
SELECT MAKEDATE(2025, 32); 2025-02-01 | 
MAKETIME(hour,minute,second) | 
创建时间 | 
SELECT MAKETIME(13, 1, 1); 13:01:01 | 
PERIOD_ADD(period, months) | 
增加月份 | 
SELECT PERIOD_ADD(202501,1); 202502 | 
PERIOD_DIFF(period1, period2) | 
相差月份 | 
SELECT PERIOD_DIFF(202501, 202502); -1 | 
TO_DAYS(date) | 
从0000-00-00计算天数 | 
SELECT TO_DAYS(‘0000-01-01’); 1 | 
FROM_DAYS(days) | 
将天数转为日期 | 
SELECT FROM_DAYS(366); 1 | 
 | 
 | 
 | 
实用案例
计算年龄
SELECT birth_date, TIMESTAMPDIFF(YEAR, birth_date, CURDATE()) AS ageFROM users;
获取本周第一天
SELECT DATE_ADD(CURDATE(), INTERVAL 2 - DAYOFWEEK(CURDATE()) DAY);
月末处理
SELECT order_date, IF(order_date = LAST_DAY(order_date), \'月末订单\', \'普通订单\') AS order_typeFROM orders;
时间范围查询
SELECT *FROM logsWHERE log_time BETWEEN DATE_SUB(NOW(), INTERVAL 1 HOUR) AND NOW();
今天起下个工作日计算(排除周末)
SELECT start_date, DATE_ADD(start_date, INTERVAL 5 DAY) AS end_date_naive, DATE_ADD( start_date, INTERVAL 5 + (2 * (WEEK(DATE_ADD(start_date, INTERVAL 5 DAY)) - WEEK(start_date))) DAY ) AS end_date_adjustedFROM projects;
提取JSON字段值
SELECT JSON_EXTRACT(json_column, \'$.key_name\') FROM table_name;
水族观赏鱼