首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >MySQL数据库日期时间函数大全

MySQL数据库日期时间函数大全

作者头像
用户5921339
发布2025-12-21 14:07:52
发布2025-12-21 14:07:52
9880
举报

一、获取当前日期/时间类

函数

说明

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 · · · · ·

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-12-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT人家 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、获取当前日期/时间类
  • 二、日期计算函数(加减时间)
  • 三、日期提取类(取年、月、日等)
    • 示例
  • 四、日期格式化
    • 常用格式说明:
  • 五、日期差值计算
  • 六、Unix时间戳相关
  • 七、其他实用函数
    • 示例:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档