函数 | 说明 |
|---|---|
NOW() | 当前日期 + 时间 |
CURDATE() | 当前日期 |
CURTIME() | 当前时间 |
CURRENT_TIMESTAMP() | 当前时间戳(与 NOW 等价),常用于字段默认值 |
LOCALTIME() | 本地时间,与 NOW 相同 |
LOCALTIMESTAMP() | 同上,与 NOW 相同 |
函数 | 说明 |
|---|---|
DATE_ADD() | 给日期增加时间 |
DATE_SUB() | 给日期减少时间 |
ADDDATE() | 增加日期,同 DATE_ADD |
SUBDATE() | 减少日期,同 DATE_SUB |
示例:
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) | 一年中的第几个星期 |
select WEEKOFYEAR(now());
select WEEK(CURDATE(),1)
函数 | 说明 |
|---|---|
DATE_FORMAT() | 日期格式化 |
TIME_FORMAT() | 时间格式化 |
STR_TO_DATE() | 字符串转日期格式 |
示例:
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s');
select DATE_FORMAT(now(), '%Y-%m-01');
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 |
示例:
select datediff(curdate(), date_sub(curdate(), interval 1 month));
SELECT TIMESTAMPDIFF(HOUR, '2025-12-01 08:00:00', now());
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_TIMESTAMP() | 日期时间转时间戳 |
FROM_UNIXTIME() | 时间戳转日期 |
示例:
select unix_timestamp(date_sub(now(),interval 1 month));
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) | 从日期/时间值中提取指定的部分 |
select last_day(curdate());
select last_day(date_sub(now(),interval 0 month));
select day(last_day(curdate()));
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;
select EXTRACT(YEAR_MONTH FROM CURRENT_DATE()) AS '年月',EXTRACT(QUARTER FROM CURRENT_DATE()) AS '季度';
· · · · · END · · · · ·