一、获取当前日期/时间类
函数
说明
NOW()
当前日期 + 时间
CURDATE()
当前日期
CURTIME()
当前时间
CURRENT_TIMESTAMP()
当前时间戳(与 NOW 等价),常用于字段默认值
LOCALTIME()
本地时间,与 NOW 相同
LOCALTIMESTAMP()
同上,与 NOW 相同
二、日期计算函数(加减时间)函数
说明
DATE_ADD()
给日期增加时间
DATE_SUB()
给日期减少时间
ADDDATE()
增加日期,同 DATE_ADD
SUBDATE()
减少日期,同 DATE_SUB
示例:
获取本月第一天代码语言:javascript复制select date_add(curdate(), interval - day(curdate()) + 1 day);
三、日期提取类(取年、月、日等)函数
说明
YEAR(date)
年
MONTH(date)
月
DAY(date)
日
HOUR(time)
小时
MINUTE(time)
分
SECOND(time)
秒
WEEK(date, mode)
星期(周)
DAYOFWEEK(date)
星期几,返回 1-7,其中 1=周日,7=周六
DAYOFYEAR(date)
一年中的第几天
DAYOFMONTH(date)
月中的第几天
WEEKOFYEAR(date)
一年中的第几个星期
WEEKDAY(date)
一年中的第几个星期
示例今天是本年的第几周代码语言:javascript复制select WEEKOFYEAR(now());
select WEEK(CURDATE(),1)
四、日期格式化函数
说明
DATE_FORMAT()
日期格式化
TIME_FORMAT()
时间格式化
STR_TO_DATE()
字符串转日期格式
示例:
日期转换成字符串代码语言:javascript复制SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s');
本月第一天代码语言:javascript复制select DATE_FORMAT(now(), '%Y-%m-01');
字符串转换成日期代码语言:javascript复制SELECT STR_TO_DATE('2025-12-08', '%Y-%m-%d');
常用格式说明:格式符
含义
%Y
4位年份(如:2025)
%y
2位年份(25)
%m
月份(01-12)
%c
月份(1-12))
%d
日(08)
%e
日(8)
%H
小时(24小时制),带前导0
%h
小时(12小时制),带前导0
%k
小时(24小时制),不带前导0
%I
小时(12小时制),同 %h
%l
小时(12小时制),不带前导0
%i
分
%s
秒
%W
星期名称
%w
星期数字
%a
星期缩写
%M
月份名称
%b
月份名称缩写
%p
显示上午或下午
%T
完整24小时制时间
%r
完整12小时制时间
五、日期差值计算函数
说明
DATEDIFF(a, b)
两个日期之间的天数差
TIMEDIFF(a, b)
两个时间之间的差值
TIMESTAMPDIFF(unit, a, b)
两个日期或时间之间的差值
PERIOD_DIFF(a, b)
两个期间之间的月份差,期间格式为 YYMM 或 YYYYMM
示例:
获取当前时间与上个月之间的天数代码语言:javascript复制select datediff(curdate(), date_sub(curdate(), interval 1 month));
获取当前时间到指定日期的时间间隔代码语言:javascript复制SELECT TIMESTAMPDIFF(HOUR, '2025-12-01 08:00:00', now());
计算距离高考日期代码语言:javascript复制SELECT
CURDATE() AS 当前日期,
CASE
WHEN CURDATE() <= CONCAT(YEAR(CURDATE()), '-06-07') THEN
CONCAT(YEAR(CURDATE()), '-06-07')
ELSE
CONCAT(YEAR(CURDATE()) + 1, '-06-07')
END AS 下次高考日期,
DATEDIFF(
CASE
WHEN CURDATE() <= CONCAT(YEAR(CURDATE()), '-06-07') THEN
CONCAT(YEAR(CURDATE()), '-06-07')
ELSE
CONCAT(YEAR(CURDATE()) + 1, '-06-07')
END,
CURDATE()
) AS 倒计时天数;
六、Unix时间戳相关函数
说明
UNIX_TIMESTAMP()
日期时间转时间戳
FROM_UNIXTIME()
时间戳转日期
示例:
上月今天的当前时间(时间戳)代码语言:javascript复制select unix_timestamp(date_sub(now(),interval 1 month));
将时间戳转换成日期代码语言:javascript复制select FROM_UNIXTIME(1705278645, '%Y-%m-%d %H:%s:%i')
七、其他实用函数函数
说明
LAST_DAY(date)
日期所在月份的最后一天
DAYNAME(date)
星期几的名称
MONTHNAME(date)
月份名称
SEC_TO_TIME(9527)
秒转换成时间
TIME_TO_SEC('02:38:47')
时间转换成秒
EXTRACT(unit FROM date)
从日期/时间值中提取指定的部分
示例:本月最后一天代码语言:javascript复制select last_day(curdate());
select last_day(date_sub(now(),interval 0 month));
本月天数代码语言:javascript复制select day(last_day(curdate()));
本月还剩多少天代码语言:javascript复制SELECT DATEDIFF(LAST_DAY(CURDATE()), CURDATE()) AS days_remaining;
SELECT DAY(LAST_DAY(CURDATE())) - DAY(CURDATE()) AS days_remaining;
SELECT TIMESTAMPDIFF(DAY, CURDATE(), LAST_DAY(CURDATE())) AS days_remaining;
提取年月和季度代码语言:javascript复制select EXTRACT(YEAR_MONTH FROM CURRENT_DATE()) AS '年月',EXTRACT(QUARTER FROM CURRENT_DATE()) AS '季度';
· · · · · END · · · · ·