2025年3月19日 星期三 甲辰(龙)年 月十八 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 软件应用 > 数据库 > MySQL

MySQL:日期时间函数整理

时间:05-23来源:作者:点击数:39

获取日期时间

函数 描述
NOW 返回当前日期和时间
CURDATE 返回当前日期
CURRENT_DATE 返回当前日期
CURRENT_TIME 返回当前时间
CURRENT_TIMESTAMP 返回当前日期和时间
CURTIME 返回当前时间
LOCALTIME 返回当前日期和时间
LOCALTIMESTAMP 返回当前日期和时间
SYSDATE 返回当前日期和时间
FROM_DAYS 从数字日期值返回日期
MAKEDATE 根据年份和天数值创建并返回日期
MAKETIME 根据小时、分钟和秒值创建并返回时间
SEC_TO_TIME 根据指定的秒数返回一个时间值
STR_TO_DATE 根据字符串和格式返回日期
TIMESTAMP 根据日期或日期时间值返回一个日期时间值

日期属性

函数 描述
DATE_FORMAT 格式化日期
TIME_FORMAT 按指定格式格式化时间
EXTRACT 从给定日期提取部分
DATE 从日期时间表达式中提取日期部分
TIME 从给定时间/日期时间中提取时间部分
YEAR 返回给定日期的年份部分
QUARTER 返回给定日期值的一年中的季度
MONTH 返回给定日期的月份部分
MONTHNAME 返回给定日期的月份名称
DAYOFMONTH / DAY 返回给定日期的月份日期
HOUR 返回给定日期的小时部分
MINUTE 返回时间/日期时间的分钟部分
SECOND 返回时间/日期时间的秒部分
MICROSECOND 返回时间/日期时间的微秒部分
TIME_TO_SEC 将时间值转换为秒
DAYOFYEAR 返回给定日期的一年中的哪一天
DAYOFWEEK 返回给定日期的星期索引
WEEKDAY 返回给定日期的星期编号
DAYNAME 返回给定日期的星期名称
WEEK 返回给定日期的周数
WEEKOFYEAR 返回给定日期的周数
YEARWEEK 返回给定日期的年和周数
TO_DAYS 返回日期和日期"0000-00-00"之间的天数

日期计算

函数 描述
ADDDATE 将时间/日期间隔添加到日期,然后返回日期
ADDTIME 将时间间隔添加到时间/日期时间,然后返回时间/日期时间
DATEDIFF 返回两个日期值之间的天数
DATE_ADD 将时间/日期间隔添加到日期,然后返回日期
DATE_SUB 从日期中减去时间/日期间隔,然后返回日期
PERIOD_ADD 将指定的月数添加到期间
PERIOD_DIFF 返回两个句点之间的差
SUBDATE 从日期中减去时间/日期间隔,然后返回日期
SUBTIME 从日期时间中减去一个时间间隔,然后返回时间/日期时间
TIMEDIFF 返回两个时间/日期时间表达式之间的差异
LAST_DAY 提取给定日期当月的最后一天

ADDDATE

将时间/日期间隔添加到日期,然后返回日期

语法

  • ADDDATE(date, INTERVAL value addunit)
  • addunit常用值
    • YEAR
    • MONTH
    • DAY
    • HOUR
    • MINUTE
    • SECOND

示例

  • mysql> SELECT ADDDATE("2017-06-15", INTERVAL 10 DAY);
  • +----------------------------------------+
  • | ADDDATE("2017-06-15", INTERVAL 10 DAY) |
  • +----------------------------------------+
  • | 2017-06-25 |
  • +----------------------------------------+

DATE_ADD

将时间/日期间隔添加到日期,然后返回日期

语法

  • DATE_ADD(date, INTERVAL value addunit)
  • addunit常用值
    • YEAR
    • MONTH
    • DAY
    • HOUR
    • MINUTE
    • SECOND
  • SELECT DATE_ADD("2017-06-15", INTERVAL 2 DAY);
  • +----------------------------------------+
  • | DATE_ADD("2017-06-15", INTERVAL 2 DAY) |
  • +----------------------------------------+
  • | 2017-06-17 |
  • +----------------------------------------+

DATE_SUB

从日期中减去时间/日期间隔,然后返回日期

语法

  • DATE_SUB(date, INTERVAL value interval)
  • addunit常用值
    • YEAR
    • MONTH
    • DAY
    • HOUR
    • MINUTE
    • SECOND

示例

  • SELECT DATE_SUB("2017-06-15", INTERVAL 2 DAY);
  • +----------------------------------------+
  • | DATE_SUB("2017-06-15", INTERVAL 2 DAY) |
  • +----------------------------------------+
  • | 2017-06-13 |
  • +----------------------------------------+

DATEDIFF

返回两个日期值之间的天数

语法

  • DATEDIFF(date1, date2)

示例

  • SELECT DATEDIFF("2017-01-10", "2017-01-01");
  • +--------------------------------------+
  • | DATEDIFF("2017-01-10", "2017-01-01") |
  • +--------------------------------------+
  • | 9 |
  • +--------------------------------------+

MONTH

返回给定日期的月份部分(从 1 到 12 的数字)

语法

  • MONTH(date)

示例

  • mysql> SELECT MONTH("2017-06-15");
  • +---------------------+
  • | MONTH("2017-06-15") |
  • +---------------------+
  • | 6 |
  • +---------------------+

MONTHNAME

返回给定日期的月份名称

语法

  • MONTHNAME(date)

示例

  • mysql> SELECT MONTHNAME("2017-06-15");
  • +-------------------------+
  • | MONTHNAME("2017-06-15") |
  • +-------------------------+
  • | June |
  • +-------------------------+

示例

  • -- 返回当前日期
  • mysql> SELECT CURDATE();
  • +------------+
  • | CURDATE() |
  • +------------+
  • | 2023-10-24 |
  • +------------+
  • -- 返回当前日期
  • mysql> SELECT CURRENT_DATE();
  • +----------------+
  • | CURRENT_DATE() |
  • +----------------+
  • | 2023-10-24 |
  • +----------------+
  • -- 返回当前时间
  • mysql> SELECT CURRENT_TIME();
  • +----------------+
  • | CURRENT_TIME() |
  • +----------------+
  • | 11:39:45 |
  • +----------------+
  • -- 返回当前时间
  • mysql> SELECT CURTIME();
  • +-----------+
  • | CURTIME() |
  • +-----------+
  • | 11:40:44 |
  • +-----------+
  • -- 返回当前日期和时间
  • mysql> SELECT CURRENT_TIMESTAMP();
  • +---------------------+
  • | CURRENT_TIMESTAMP() |
  • +---------------------+
  • | 2023-10-24 11:40:12 |
  • +---------------------+
  • -- 返回当前日期和时间
  • mysql> SELECT LOCALTIME();
  • +---------------------+
  • | LOCALTIME() |
  • +---------------------+
  • | 2023-10-24 14:09:55 |
  • +---------------------+
  • -- 返回当前日期和时间
  • mysql> SELECT LOCALTIMESTAMP();
  • +---------------------+
  • | LOCALTIMESTAMP() |
  • +---------------------+
  • | 2023-10-24 14:10:22 |
  • +---------------------+
  • -- 返回当前日期和时间
  • mysql> SELECT NOW();
  • +---------------------+
  • | NOW() |
  • +---------------------+
  • | 2023-10-24 14:12:47 |
  • +---------------------+
  • -- 返回当前日期和时间
  • mysql> SELECT SYSDATE();
  • +---------------------+
  • | SYSDATE() |
  • +---------------------+
  • | 2023-10-24 14:17:24 |
  • +---------------------+
  • -- 提取日期部分
  • mysql> SELECT DATE("2017-06-15 09:34:21");
  • +-----------------------------+
  • | DATE("2017-06-15 09:34:21") |
  • +-----------------------------+
  • | 2017-06-15 |
  • +-----------------------------+
  • -- 从时间表达式中提取时间部分
  • mysql> SELECT TIME("2017-08-15 19:30:10");
  • +-----------------------------+
  • | TIME("2017-08-15 19:30:10") |
  • +-----------------------------+
  • | 19:30:10 |
  • +-----------------------------+
  • -- 返回给定日期的年份部分(从 1000 到 9999 的数字)
  • mysql> SELECT YEAR("2017-06-15");
  • +--------------------+
  • | YEAR("2017-06-15") |
  • +--------------------+
  • | 2017 |
  • +--------------------+
  • -- 返回给定日期的小时部分
  • mysql> SELECT HOUR("2017-06-20 09:34:00");
  • +-----------------------------+
  • | HOUR("2017-06-20 09:34:00") |
  • +-----------------------------+
  • | 9 |
  • +-----------------------------+
  • -- 从给定日期提取部分
  • SELECT EXTRACT(MONTH FROM "2017-06-15");
  • +----------------------------------+
  • | EXTRACT(MONTH FROM "2017-06-15") |
  • +----------------------------------+
  • | 6 |
  • +----------------------------------+
  • -- 返回给定日期的月份日期,等于 DAY() 函数
  • mysql> SELECT DAYOFMONTH("2017-06-15");
  • +--------------------------+
  • | DAYOFMONTH("2017-06-15") |
  • +--------------------------+
  • | 15 |
  • +--------------------------+
  • -- 返回某个日期的工作日索引
  • -- 1=星期日,2=星期一,3=星期二,4=星期三,5=星期四,6=星期五,7=星期六
  • mysql> SELECT DAYOFWEEK("2017-06-15");
  • +-------------------------+
  • | DAYOFWEEK("2017-06-15") |
  • +-------------------------+
  • | 5 |
  • +-------------------------+
  • -- 返回日期的工作日编号
  • -- 0 = 星期一,1 = 星期二,2 = 星期三,3 = 星期四,4 = 星期五,5 = 星期六,6 = 星期日
  • mysql> SELECT WEEKDAY("2017-06-15");
  • +-----------------------+
  • | WEEKDAY("2017-06-15") |
  • +-----------------------+
  • | 3 |
  • +-----------------------+
  • -- 返回给定日期的星期名称
  • mysql> SELECT DAYNAME("2017-06-15");
  • +-----------------------+
  • | DAYNAME("2017-06-15") |
  • +-----------------------+
  • | Thursday |
  • +-----------------------+
  • -- 返回给定日期的一年中的哪一天(从 1 到 366 的数字)
  • mysql> SELECT DAYOFYEAR("2017-06-15");
  • +-------------------------+
  • | DAYOFYEAR("2017-06-15") |
  • +-------------------------+
  • | 166 |
  • +-------------------------+
  • -- 返回时间/日期时间的微秒部分(从 0 到 999999)
  • mysql> SELECT MICROSECOND("2017-06-20 09:34:00.000023");
  • +-------------------------------------------+
  • | MICROSECOND("2017-06-20 09:34:00.000023") |
  • +-------------------------------------------+
  • | 23 |
  • +-------------------------------------------+
  • -- 返回时间/日期时间的分钟部分(从 0 到 59)
  • mysql> SELECT MINUTE("2017-06-20 09:34:00");
  • +-------------------------------+
  • | MINUTE("2017-06-20 09:34:00") |
  • +-------------------------------+
  • | 34 |
  • +-------------------------------+
  • -- 提取给定日期该月的最后一天
  • mysql> SELECT LAST_DAY("2017-06-20");
  • +------------------------+
  • | LAST_DAY("2017-06-20") |
  • +------------------------+
  • | 2017-06-30 |
  • +------------------------+
  • -- 返回给定日期值(从 1 到 4 的数字)的一年中的季度
  • mysql> SELECT QUARTER("2017-06-15");
  • +-----------------------+
  • | QUARTER("2017-06-15") |
  • +-----------------------+
  • | 2 |
  • +-----------------------+
  • -- 返回时间/日期时间的秒部分(从 0 到 59)
  • mysql> SELECT SECOND("23:59:59");
  • +--------------------+
  • | SECOND("23:59:59") |
  • +--------------------+
  • | 59 |
  • +--------------------+

DATE_FORMAT

按指定格式化日期

语法

  • DATE_FORMAT(date, format)
格式 描述
%a 工作日的缩写名称(周日至周六)
%b 缩写月份名称(1 月至 12 月)
%c 数字月份名称(0 到 12)
%D 以数字形式表示的月份中的日期,后跟后缀 (1st, 2nd, 3rd, …)
%d 以数值表示的月份中的日期(01 到 31)
%e 以数字形式表示的月份中的日期(0 到 31)
%f 微秒(000000 到 999999)
%H 小时(00 到 23)
%h 小时(00 到 12)
%I 小时(00 到 12)
%i 分钟(00 到 59)
%j 一年中的某一天(001 到 366)
%k 小时(0 到 23)
%l 小时(1 到 12)
%M 完整的月份名称(1 月至 12 月)
%m 数字形式的月份名称(00 到 12)
%p 上午或下午
%r 12 小时 AM 或 PM 格式的时间 (hh:mm:ss AM/PM)
%S 秒(00 到 59)
%s 秒(00 到 59)
%T 24 小时制时间 (hh:mm:ss)
%U 星期天是一周的第一天(00 到 53)
%u 星期一是一周的第一天的星期(00 到 53)
%V 星期天是一周的第一天(01 到 53)。与 %X 一起使用
%v 星期一是一周的第一天的星期(01 到 53)。与 %X 一起使用
%W 完整的工作日名称(周日至周六)
%w 星期天=0,星期六=6
%X 星期天是一周的第一天的星期。与 %V 一起使用
%x 星期一是一周的第一天的一周的年份。与 %V 一起使用
%Y 4 位数字形式的年份
%y 2 位数字形式的年份

示例

  • mysql> SELECT DATE_FORMAT("2017-06-01 09:01:02", "%Y-%m-%d %H:%i:%s");
  • +---------------------------------------------------------+
  • | DATE_FORMAT("2017-06-01 09:01:02", "%Y-%m-%d %H:%i:%s") |
  • +---------------------------------------------------------+
  • | 2017-06-01 09:01:02 |
  • +---------------------------------------------------------+
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门