MySQL(七)-日期和时间函数的使用解析

这篇具有很好参考价值的文章主要介绍了MySQL(七)-日期和时间函数的使用解析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


日期和时间函数主要用来处理日期和时间值,一般的日期函数除了使用 DATE 类型的参数外也可以使用 DATETIME 或者 TIMESTAMP 类型的参数,但会忽略这些值的时间部分。相同的,以TIME 类型值为参数的函数,可以接受 TIMESTAMP 类型的参数,但会忽略日期部分,许多日期函数可以同时接受数字和字符串类型的两种参数,介绍各种日期和时间函数的功能和用法。

1 获取当前日期的函数和获取当前时间的函数

CURDATE0和 CURRENT DATEO函数的作用相同,将当前日期按照“YYYY-MM-DD’或YYYYMMDD格式的值返回,具体格式根据函数在字符串或是数字语境中而定。

mysql>  SELECT CURDATE(),CURRENT_DATE(), CURDATE() + 0;
+------------+----------------+---------------+
| CURDATE()  | CURRENT_DATE() | CURDATE() + 0 |
+------------+----------------+---------------+
| 2023-04-28 | 2023-04-28     |      20230428 |
+------------+----------------+---------------+
1 row in set (0.00 sec)

CURTIME0和CURRENT TIME0函数的作用相同,将当前时间以“HH:MMSS’或HHMMSS的格式返回,具体格式根据函数在字符串或是数字语境中而定。

mysql> SELECT CURTIME(),CURRENT_TIME(),CURTIME() + 0;
+-----------+----------------+---------------+
| CURTIME() | CURRENT_TIME() | CURTIME() + 0 |
+-----------+----------------+---------------+
| 09:50:51  | 09:50:51       |         95051 |
+-----------+----------------+---------------+
1 row in set (0.00 sec)

2 获取当前日期和时间的函数

CURRENT_TIMESTAMPO、LOCALTIME0、NOWO和SYSDATE04个函数的作用相同,均返回当前日期和时间值,格式为“YYYY-MM-DDHH:MM:SS’或YYYYMMDDHHMMSS,具体格式根据函数在字符串或数字语境中而定。

mysql> SELECT CURRENT_TIMESTAMP(),LOCALTIME(),NOW(),SYSDATE();
+---------------------+---------------------+---------------------+---------------------+
| CURRENT_TIMESTAMP() | LOCALTIME()         | NOW()               | SYSDATE()           |
+---------------------+---------------------+---------------------+---------------------+
| 2023-04-28 09:52:41 | 2023-04-28 09:52:41 | 2023-04-28 09:52:41 | 2023-04-28 09:52:41 |
+---------------------+---------------------+---------------------+---------------------+
1 row in set (0.00 sec)

3 UNIX时间戳函数

UNIX TIMESTAMP(date)若无参数调用,表示的是从 1970 年 1 月 1 日 00:00:00 UTC 到当前时间的秒数,它是一个整数,可以用于方便地进行时间计算。date 可以是一个DATE 字符串、DATETIME 字符串、TIMESTAMP 或一个当地时间的YYMMDD或YYYYMMDD 格式的数字。

mysql>  SELECT UNIX_TIMESTAMP(), UNIX_TIMESTAMP(NOW()), NOW();
+------------------+-----------------------+---------------------+
| UNIX_TIMESTAMP() | UNIX_TIMESTAMP(NOW()) | NOW()               |
+------------------+-----------------------+---------------------+
|       1682647228 |            1682647228 | 2023-04-28 10:00:28 |
+------------------+-----------------------+---------------------+
1 row in set (0.00 sec)

FROM_UNIXTIME 函数:将一个表示 UNIX 时间戳的秒数转换为一个日期时间值。两个函数互为反函数。

mysql>  SELECT FROM_UNIXTIME('1234567891');
+-----------------------------+
| FROM_UNIXTIME('1234567891') |
+-----------------------------+
| 2009-02-14 07:31:31.000000  |
+-----------------------------+
1 row in set (0.00 sec)

4 返回UTC日期的函数和返 UTC 时间的函数

UTC DATE0函数返回当前 UTC(世界标准时间)日期值,其格式为“YYYY-MM-DD’或YYYYMMDD,具体格式取决于函数是否用在字符串或数字语境中。

mysql>  SELECT UTC_DATE(), UTC_DATE() + 0;
+------------+----------------+
| UTC_DATE() | UTC_DATE() + 0 |
+------------+----------------+
| 2023-04-28 |       20230428 |
+------------+----------------+
1 row in set (0.00 sec)

UTC TIME0返回当前 UTC 时间值,其格式为“HH:MM:SS’或HHMMSS,具体格式取决于函数是否用在字符串或数字语境中。

mysql>  SELECT UTC_TIME(), UTC_TIME() + 0;
+------------+----------------+
| UTC_TIME() | UTC_TIME() + 0 |
+------------+----------------+
| 02:02:42   |          20242 |
+------------+----------------+
1 row in set (0.00 sec)

5 获取月份的函数MONTH(date)和 MONTHNAME(date)

MONTH(date)函数返回 date 对应的月份,范围值为 1~12。

mysql> SELECT MONTH('2023-02-13');
+---------------------+
| MONTH('2023-02-13') |
+---------------------+
|                   2 |
+---------------------+
1 row in set (0.00 sec)

MONTHNAME(date)函数返回日期date 对应月份的英文全名

mysql>  SELECT MONTHNAME('2023-08-23');
+-------------------------+
| MONTHNAME('2023-08-23') |
+-------------------------+
| August                  |
+-------------------------+
1 row in set (0.00 sec)

6 获取星期的函数DAYNAME(d)DAYOFWEEK(d)和WEEKDAY(d)

DAYNAME(d)函数返回d 对应的工作日的英文名称。

mysql>  SELECT DAYNAME('208-05-24');
+----------------------+
| DAYNAME('208-05-24') |
+----------------------+
| Tuesday              |
+----------------------+
1 row in set (0.00 sec)

DAYOFWEEK(d)函数返回d对应的一周中的索引(位置,1 表示周日,2表示周一,…,7表示周六)。

mysql> SELECT DAYOFWEEK('2211-09-30');
+-------------------------+
| DAYOFWEEK('2211-09-30') |
+-------------------------+
|                       2 |
+-------------------------+
1 row in set (0.00 sec)

WEEKDAY(d)返回d对应的工作日索引:0表示周一,1 表示周二,…,6 表示周日

mysql> SELECT WEEKDAY('1911-08-03 22:23:00'), WEEKDAY('2024-07-01');
+--------------------------------+-----------------------+
| WEEKDAY('1911-08-03 22:23:00') | WEEKDAY('2024-07-01') |
+--------------------------------+-----------------------+
|                              3 |                     0 |
+--------------------------------+-----------------------+
1 row in set (0.00 sec)

7 获取星期数的函数WEEK(d)和 WEEKOFYEAR(d)

WEEK(d)计算日期d 是一年中的第几周。WEEK0的双参数形式允许指定该星期是否起始于周日或周一,以及返回值的范围是否为0~53 或1~53。若Mode参数被省略,则使用default week format系统自变量的值。
MySQL(七)-日期和时间函数的使用解析

mysql> SELECT WEEK('2011-02-20'),WEEK('2011-02-20',0), WEEK('2011-02-20',1);
+--------------------+----------------------+----------------------+
| WEEK('2011-02-20') | WEEK('2011-02-20',0) | WEEK('2011-02-20',1) |
+--------------------+----------------------+----------------------+
|                  8 |                    8 |                    7 |
+--------------------+----------------------+----------------------+
1 row in set (0.00 sec)

使用不同的参数的原因是不同地区和国家的习惯不同,每周的第
天并不相同。

mysql>  SELECT WEEK('2011-02-20',3), WEEKOFYEAR('2011-02-20');
+----------------------+--------------------------+
| WEEK('2011-02-20',3) | WEEKOFYEAR('2011-02-20') |
+----------------------+--------------------------+
|                    7 |                        7 |
+----------------------+--------------------------+
1 row in set (0.00 sec)

8 获取天数的函数DAYOFYEAR(d)和 DAYOFMONTH(d)

DAYOFYEAR(d)函数返回d 是一年中的第几天,范围是 1~366。

mysql> SELECT DAYOFYEAR('1911-08-03');
+-------------------------+
| DAYOFYEAR('1911-08-03') |
+-------------------------+
|                     215 |
+-------------------------+
1 row in set (0.00 sec)

DAYOFMONTH(d)函数返回d 是一个月中的第几天,范围是 1~31。

mysql>  SELECT DAYOFMONTH('1911-08-03');
+--------------------------+
| DAYOFMONTH('1911-08-03') |
+--------------------------+
|                        3 |
+--------------------------+
1 row in set (0.00 sec)

9 获取年份、季度、小时、分钟和秒钟的函数

YEAR(date)返回date 对应的年份,范围是1970~2069。

mysql>   SELECT YEAR('22-02-03'),YEAR('96-02-03');
+------------------+------------------+
| YEAR('22-02-03') | YEAR('96-02-03') |
+------------------+------------------+
|             2022 |             1996 |
+------------------+------------------+
1 row in set (0.00 sec)

QUARTER(date)返回 date 对应的一年中的季度值,范围是1~4。

mysql>  SELECT QUARTER('22-05-01');
+---------------------+
| QUARTER('22-05-01') |
+---------------------+
|                   2 |
+---------------------+
1 row in set (0.00 sec)

MINUTE(time)返回time 对应的分钟数,范围是0~59。

mysql>  SELECT MINUTE('02-03-04 05:06:07');
+-----------------------------+
| MINUTE('02-03-04 05:06:07') |
+-----------------------------+
|                           6 |
+-----------------------------+
1 row in set (0.00 sec)

SECOND(time)返回time 对应的秒数,范围是0~59。


mysql>  SELECT SECOND('05:06:07');
+--------------------+
| SECOND('05:06:07') |
+--------------------+
|                  7 |
+--------------------+
1 row in set (0.00 sec)

10 获取日期的指定值的函数 EXTRACT(type FROM date)

EXTRACT(type FROM date)函数所使用的时间间隔类型说明符与DATE ADDO或DATE SUBO的相同,但它从日期中提取一部分,而不是执行日期运算。

mysql> SELECT EXTRACT(YEAR FROM '1976-07-02') AS col1,
    ->      EXTRACT(YEAR_MONTH FROM '2011-08-13 02:03:03') AS col2,
    ->      EXTRACT(DAY_MINUTE FROM '2311-09-14 03:04:03') AS col3;
+------+--------+--------+
| col1 | col2   | col3   |
+------+--------+--------+
| 1976 | 201108 | 140304 |
+------+--------+--------+
1 row in set (0.00 sec)

type值为YEAR 时,只返回年值,type 值为 YEAR MONTH 时返回年与月份,type 值为 DAY_MINUTE 时,返回日、小时和分钟值。

11 时间和秒钟转换的函数

TIME TOSEC(time)返回已转化为秒的 time 参数。转换公式为:小时3600+分钟60+秒。

mysql>  SELECT TIME_TO_SEC('13:23:00');
+-------------------------+
| TIME_TO_SEC('13:23:00') |
+-------------------------+
|                   48180 |
+-------------------------+
1 row in set (0.00 sec)

SEC TO TIME(seconds)返回被转化为小时、分钟和秒数的 seconds 参数值,其格式为HH:MM:SS’或HHMMSS,具体格式根据该函数是否用在字符串或数字语境中而定。

mysql>  SELECT SEC_TO_TIME(12345),SEC_TO_TIME(12345)+0,
    ->      TIME_TO_SEC('13:23:00'), SEC_TO_TIME(72580);
+--------------------+----------------------+-------------------------+--------------------+
| SEC_TO_TIME(12345) | SEC_TO_TIME(12345)+0 | TIME_TO_SEC('13:23:00') | SEC_TO_TIME(72580) |
+--------------------+----------------------+-------------------------+--------------------+
| 03:25:45           |                32545 |                   48180 | 20:09:40           |
+--------------------+----------------------+-------------------------+--------------------+
1 row in set (0.00 sec)

12 计算日期和时间的函数

计算日期和时间的函数有 DATE ADDO、ADDDATE0、DATE SUBO、SUBDATEO、ADDTIME0、SUBTIMEO和 DATE DIFFO。
在DATE ADD(date,INTERVAL expr type)和 DATE SUB(date,INTERVAL expr type)中,date是一个DATETIME或DATE 值,用来指定起始时间。expr 是个表达式,用来指定从起始日期添加或减去的时间间隔值。对于负值的时间间隔,expr 可以以一个负号“-’开头。type 为关键词,指示了表达式被解释的方式。
指定修改的时间段时,也可以指定负值,负值代表相减,即返回以前的日期和时间。
MySQL(七)-日期和时间函数的使用解析
MySQL(七)-日期和时间函数的使用解析
若 date 参数是一个 DATE 值,计算只会包括 YEAR、MONTH和 DAY 部分(没有时间部分),其结果是一个 DATE 值;否则,结果将是一个 DATETIME 值。

DATEADD(dateINTERVAL expr type)和ADDDATE(dateINTERVAL expr type)两个函数的作用相同,执行日期的加运算。

mysql> SELECT DATE_ADD('2020-12-31 23:59:59', INTERVAL 1 SECOND) AS col1,
    ->      ADDDATE('2030-12-31 23:59:59', INTERVAL 1 SECOND) AS col2,
    ->      DATE_ADD('2040-12-31 23:59:59', INTERVAL '1:1' MINUTE_SECOND) AS col3;
+---------------------+---------------------+---------------------+
| col1                | col2                | col3                |
+---------------------+---------------------+---------------------+
| 2021-01-01 00:00:00 | 2031-01-01 00:00:00 | 2041-01-01 00:01:00 |
+---------------------+---------------------+---------------------+
1 row in set (0.00 sec)

前两个是将时间增加 1S 后进行返回,最后是增加1分1秒进行返回的结果。

DATESUB(dateINTERVALexpr type)或者SUBDATE(dateINTERVALexpr type)两个函数的作用相同,执行日期的减运算。

mysql>  SELECT DATE_SUB('2011-01-02', INTERVAL 31 DAY) AS col1,
    ->      SUBDATE('2011-01-02', INTERVAL 31 DAY) AS col2,
    ->      DATE_SUB('2011-01-01 00:01:00',INTERVAL '0 0:1:1' DAY_SECOND) AS col3;
+------------+------------+---------------------+
| col1       | col2       | col3                |
+------------+------------+---------------------+
| 2010-12-02 | 2010-12-02 | 2010-12-31 23:59:59 |
+------------+------------+---------------------+
1 row in set (0.00 sec)

DATE ADD和 DATE SUB 在指定修改的时间段时,也可以指定负值,负值代表相减即返回以前的日期和时间。

ADDTIME(date,expr)函数将 expr 值添加到 date,并返回修改后的值,date 是一个日期或者日期时间表达式,而expr 是一个时间表达式。

mysql>  SELECT ADDTIME('2000-12-31 23:59:59','1:1:1'), ADDTIME('02:02:02', '02:00:00');
+----------------------------------------+---------------------------------+
| ADDTIME('2000-12-31 23:59:59','1:1:1') | ADDTIME('02:02:02', '02:00:00') |
+----------------------------------------+---------------------------------+
| 2001-01-01 01:01:00                    | 04:02:02                        |
+----------------------------------------+---------------------------------+
1 row in set (0.00 sec)

SUBTIME(date,expr)函数将 date 减去 expr 值,并返回修改后的值。其中,date 是一个日期或者日期时间表达式,而expr 是一个时间表达式。

mysql>  SELECT SUBTIME('2000-12-31 23:59:59','1:1:1'), SUBTIME('02:02:02','02:00:00');
+----------------------------------------+--------------------------------+
| SUBTIME('2000-12-31 23:59:59','1:1:1') | SUBTIME('02:02:02','02:00:00') |
+----------------------------------------+--------------------------------+
| 2000-12-31 22:58:58                    | 00:02:02                       |
+----------------------------------------+--------------------------------+
1 row in set (0.00 sec)

DATEDIFF(datel,date2)返回起始时间 datel 和结束时间 date2 之间的天数。datel和 date2 为日期或日期时间表达式。计算中只用到这些值的日期部分。

mysql>  SELECT DATEDIFF('2010-12-31 23:59:59','2010-12-30') AS col1,
    ->      DATEDIFF('2010-11-30 23:59:59','2010-12-31') AS col2;
+------+------+
| col1 | col2 |
+------+------+
|    1 |  -31 |
+------+------+
1 row in set (0.00 sec)

13 将日期和时间格式化的函数

DATEFORMAT(date,format)根据 format 指定的格式显示date值所示。
MySQL(七)-日期和时间函数的使用解析
使用DATE FORMATO函数格式化输出日期和时间值

mysql>  SELECT DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y') AS col1,
    ->      DATE_FORMAT('1997-10-04 22:23:00','%D %y %a %d %m %b %j') AS col2;
+-----------------------+--------------------------+
| col1                  | col2                     |
+-----------------------+--------------------------+
| Saturday October 1997 | 4th 97 Sat 04 10 Oct 277 |
+-----------------------+--------------------------+
1 row in set (0.00 sec)

TIME FORMAT(timeformat)根据表达式format 的要求显示时间 time。表达式format 指定了显示的格式。因为TIME FORMAT(timeformat)只处理时间,所以format 只使用时间格式。

mysql>  SELECT TIME_FORMAT('16:00:00', '%H %k %h %I %l');
+-------------------------------------------+
| TIME_FORMAT('16:00:00', '%H %k %h %I %l') |
+-------------------------------------------+
| 16 16 04 04 4                             |
+-------------------------------------------+
1 row in set (0.00 sec)

GET_FORMAT(val type,format type)返回日期时间字符串的显示格式,val type 表示日期数据类型,包括 DATE、DATETIME和TIME;format type 表示格式化显示类型,包括EUR、INTERVAL、ISO、JIS、USA。GET FORMAT 根据两个值类型组合返回的字符串显示格式。
MySQL(七)-日期和时间函数的使用解析
MySQL(七)-日期和时间函数的使用解析

mysql>  SELECT GET_FORMAT(DATE,'EUR'), GET_FORMAT(DATE,'USA');
+------------------------+------------------------+
| GET_FORMAT(DATE,'EUR') | GET_FORMAT(DATE,'USA') |
+------------------------+------------------------+
| %d.%m.%Y               | %m.%d.%Y               |
+------------------------+------------------------+
1 row in set (0.00 sec)

mysql> SELECT DATE_FORMAT('2000-10-05 22:23:00', GET_FORMAT(DATE,'USA') );
+-------------------------------------------------------------+
| DATE_FORMAT('2000-10-05 22:23:00', GET_FORMAT(DATE,'USA') ) |
+-------------------------------------------------------------+
| 10.05.2000                                                  |
+-------------------------------------------------------------+
1 row in set (0.00 sec)

GET FORMAT(DATEUSA返回的显示格式字符串为%m.%d%Y,%m 以数字形式显示月份,%d 以数字形式显示日,%Y 以4 位数字形式显示年。文章来源地址https://www.toymoban.com/news/detail-428225.html

到了这里,关于MySQL(七)-日期和时间函数的使用解析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【MySQL】MySQL中的日期和时间函数有哪些?元宵节杭州灯光烟花秀你去看了吗?

    大家好,我是小冷。 今天元宵节, 元宵节 ,又称 上元节 、小正月、元夕或灯节 ,是春节之后的第一个重要节日,中国古俗 中,上元节(天官节、元宵节)﹑中元节(地官节、盂兰盆节)﹑下元节(水官节)合 称 三元 。传统习俗 出门赏月、喜猜灯谜、共吃元宵 等。 观赏

    2024年02月07日
    浏览(45)
  • Hive常见时间日期函数的使用与问题整理

    这里整理一下Hive常见的时间函数和日期函数和用法,作为平时数据处理过程的一个检索和记录。 平时在数据处理过程中,如果不经常使用时间函数,一时间遇到一些时间上的处理,难免会想不起来。 hive本身提供的时间函数已经很丰富了,基本上能满足我们所有的需求,一些

    2024年02月08日
    浏览(45)
  • SQL使用技巧(4.1)Hive日期时间函数

    常用的格式化(format)标识符: 本章节每一行代码后都有运算说明和执行结果样例,例如 - - 返回当前系统日期 yyyy-MM-dd, 【2023-04-01】 原生hive中不支持 now() 的写法,经过加工的工具(TDWTDH)可能支持,不绝对。 unix_timestamp() 也会返回一个时间戳,但并不是系统当前时间的时间

    2024年02月12日
    浏览(44)
  • 【hive】时间相关函数的使用(时间戳函数unix_timestamp()/from_unixtime()、日期处理函数datediff()/date_sub()/date_add()等)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 unix_timestamp() 无参数调用,获取当前系统时间戳为10位的bigint类型数值,该数值只精确到秒。 unix_timestamp(string timestamp) 输入格式默认为“yyyy-MM-dd HH:mm:ss”,如不符合则返回null。 unix_timestamp(string date,str

    2024年02月08日
    浏览(38)
  • MySQL 对日期使用 DATE_FORMAT()函数

    前面使用日期时间函数,获取到的要么是 yyyy-mm-dd 形式的日期,要么是 hh:MM:ss 形式的时间,或者是 yyyy-mm-dd hh:mm:ss 形式的日期及时间,其输出格式都已经确定。但在日常生活中,而每次提及日期时间信息都有不同的关注侧面,如:我只想知道今天是几号,或者是星期几,或者

    2024年02月15日
    浏览(39)
  • TDengine函数大全-时间和日期函数

    以下内容来自 TDengine 官方文档 及 GitHub 内容 。 以下所有示例基于 TDengine 3.1.0.3 1.数学函数 2.字符串函数 3.转换函数 4.时间和日期函数 5.聚合函数 6.选择函数 7.时序数据库特有函数 8.系统函数 NOW 功能说明 :返回客户端当前系统时间。 返回结果数据类型 :TIMESTAMP。 应用字段

    2024年02月10日
    浏览(37)
  • Hive-时间日期&trunc-日期与数字截取函数

    一、时间日期函数 1、获取当前时间 2、日期转时间戳 3、时间戳转日期 二、trunc - 日期与数字截取函数 1、日期截取 2、数字截取

    2024年02月11日
    浏览(44)
  • SQL Server ,日期时间函数将时间日期类型的值截取为年月日

    使用 CONVERT 函数将日期时间类型的值转换为字符串类型,同时指定格式为 yyyyMMdd(例如2022年6月30日的日期字符串为\\\'20220630\\\')。 sql复制代码 在上述例子中,我们使用 GETDATE 函数获取当前的日期时间,然后使用 CONVERT 函数将其转换为格式为 yyyyMMdd 的字符串类型。 如果要将日期

    2024年02月16日
    浏览(44)
  • 037 - 有关时间和日期的函数方法

      文档:MySQL :: MySQL 5.7 Reference Manual :: 12.7 Date and Time Functions​​​​​​ 以下为案例,更多内容可查看文档  返回当前日期: CURDATE() 返回当前时间: CURTIME() 返回当前日期和时间: NOW() 返回年份: YEAR() 返回参数的工作日索引:DAYOFWEEK()  返回月份中的第几天 (0-31):DAYOFMONT

    2024年02月10日
    浏览(40)
  • Hive时间日期函数一文详解+代码实例

    目录 前言 一、HiveSQL运行过程 二、Hive时间函数 1.获取当前时间 1.current_date() 2. current_timestamp() 3. unix_timestamp() 2.获取指定时间维度 1. year() 2.quarter() 3.month() 4.day() 5.hour() 6.minute() 7.second 8.weekofyear() 9. dayofweek()  10.last_day()  11.next_day() 12.trunc()  3.时间格式转换  1.to_date() 2. from_un

    2024年02月02日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包