日期时间函数(二)

日期时间函数

ADDDATE() 函数

MySQLADDDATE()函数在指定的日期/时间上加上指定到时间间隔加并返回新的日期/时间。ADDDATE()语法这是MySQLADDDATE()函数的语法:ADDDATE(date,days)ADDDATE(date,INTERVALvalueunit)参数date必需的。需要操作的日期。day

MySQL ADDDATE() 函数在指定的日期/时间上加上指定到时间间隔加并返回新的日期/时间。

ADDDATE() 语法

这是 MySQL ADDDATE() 函数的语法:

ADDDATE(date, days)
ADDDATE(date, INTERVAL value unit)

参数

  • date

    必需的。需要操作的日期。

  • days

    必需的。在 date 上加上的天数。

  • value

    必需的。时间/日期间隔。正数和负数都是允许的。

  • unit

    必需的。时间/日期间隔的单位。

时间/日期间隔的单位可以是以下值中的一个:

  • MICROSECOND
  • SECOND
  • MINUTE
  • HOUR
  • DAY
  • WEEK
  • MONTH
  • QUARTER
  • YEAR
  • SECOND_MICROSECOND
  • MINUTE_MICROSECOND
  • MINUTE_SECOND
  • HOUR_MICROSECOND
  • HOUR_SECOND
  • HOUR_MINUTE
  • DAY_MICROSECOND
  • DAY_SECOND
  • DAY_MINUTE
  • DAY_HOUR
  • YEAR_MONTH

返回值

ADDDATE() 函数指定的日期/时间添加指定的时间间隔,并返回一个新的日期/时间。ADDDATE() 函数的返回值和参数有关:

  • 如果 date 参数是 DATE 类型,并且时间间隔为 YEAR, MONTH 或者 DAY,返回 DATE
  • 如果 date 参数是 DATE 类型,并且时间间隔为 HOURS, MINUTES 或者 SECONDS,返回 DATETIME
  • 如果 date 参数是 DATETIME 类型,返回 DATETIME
  • 如果 date 参数是 TIME 类型,并且时间间隔为 YEAR, MONTH 或者 DAY,返回 DATETIME
  • 如果 date 参数是 TIME 类型,并且计算只涉及 HOURS, MINUTESSECONDS 部分,返回 TIME。(开始于 MySQL 8.0.28)
  • 其他情况下返回字符串。

ADDDATE() 示例

这里是几个 ADDDATE() 函数的示例。

示例 1

SELECT
    ADDDATE('2020-06-10', 10),
    ADDDATE('2020-06-10', -10)\G
 ADDDATE('2020-06-10', 10): 2020-06-20
ADDDATE('2020-06-10', -10): 2020-05-31

示例 2

SELECT
    ADDDATE('2020-06-10', INTERVAL 10 DAY),
    ADDDATE('2020-06-10', INTERVAL 10 HOUR)\G
 ADDDATE('2020-06-10', INTERVAL 10 DAY): 2020-06-20
ADDDATE('2020-06-10', INTERVAL 10 HOUR): 2020-06-10 10:00:00

示例 3

SELECT
    ADDDATE('2020-06-10 10:00:00', INTERVAL 10 HOUR),
    ADDDATE('2020-06-10 10:00:00', INTERVAL 10 MINUTE)\G
  ADDDATE('2020-06-10 10:00:00', INTERVAL 10 HOUR): 2020-06-10 20:00:00
ADDDATE('2020-06-10 10:00:00', INTERVAL 10 MINUTE): 2020-06-10 10:10:00

示例 4

SELECT
    ADDDATE(CURDATE(), INTERVAL 10 HOUR),
    ADDDATE(NOW(), INTERVAL 10 MINUTE)\G
ADDDATE(CURDATE(), INTERVAL 10 HOUR): 2022-04-11 10:00:00
  ADDDATE(NOW(), INTERVAL 10 MINUTE): 2022-04-11 08:35:42

这里,我们使用了 CURDATE() 函数返回当前的日期,使用 NOW() 函数返回当前日期时间。

ADDTIME() 函数

MySQLADDTIME()函数在指定的时间上加上指定的时间间隔并返回结果。ADDTIME()语法这是MySQLADDTIME()函数的语法:ADDTIME(timeExpr1,timeExpr2)参数timeExpr1必需的。它是一个datetime或者time表达式。timeExpr2必需的。它

MySQL ADDTIME() 函数在指定的时间上加上指定的时间间隔并返回结果。

ADDTIME() 语法

这是 MySQL ADDTIME() 函数的语法:

ADDTIME(timeExpr1, timeExpr2)

参数

  • timeExpr1

    必需的。它是一个 datetime 或者 time 表达式。

  • timeExpr2

    必需的。它是个时间表达式。它可以是正数或者负数。

返回值

ADDTIME() 函数将 timeExpr2 加到 timeExpr1 上,并返回结果。

ADDTIME() 函数按如下规则确定返回值的类型:

  • 如果 timeExpr1 参数是动态类型,ADDTIME() 函数返回值类型为 TIME
  • 否则,ADDTIME() 函数返回的数据类型和第一个参数一样。

ADDTIME() 示例

这里是几个 ADDTIME() 函数的示例。

示例 1

给指定的时间加上 10 秒钟:

SELECT
    ADDTIME('2020-10-10 10:10:10', 10),
    ADDTIME('10:10:10', 10)\G
ADDTIME('2020-10-10 10:10:10', 10): 2020-10-10 10:10:20
           ADDTIME('10:10:10', 10): 10:10:20

示例 2

给指定的时间加上 1 分钟:

SELECT
    ADDTIME('10:10:10', 100),
    ADDTIME('10:10:10', '100'),
    ADDTIME('10:10:10', '0:01:00')\G
      ADDTIME('10:10:10', 100): 10:11:10
    ADDTIME('10:10:10', '100'): 10:11:10
ADDTIME('10:10:10', '0:01:00'): 10:11:10

示例 3

给指定的时间加上和减去 1 小时 10 分钟 10 秒 10 微秒。

SELECT
    ADDTIME('10:00:00', '01:10:10.000010'),
    ADDTIME('10:00:00', '-01:10:10.000010'),
    SUBTIME('10:00:00', '01:10:10.000010')\G
 ADDTIME('10:00:00', '01:10:10.000010'): 11:10:10.000010
ADDTIME('10:00:00', '-01:10:10.000010'): 08:49:49.999990
 SUBTIME('10:00:00', '01:10:10.000010'): 08:49:49.999990

这里,参数 '-01:10:10.000010' 前面的减号意思是 '10:00:00' 减去 '01:10:10.000010',这和 SUBTIME() 函数结果一样。

CONVERT_TZ() 函数

MySQLCONVERT_TZ()函数将一个时区的时间转为另一个时区的时间并返回。CONVERT_TZ()语法这是MySQLCONVERT_TZ()函数的语法:CONVERT_TZ(datetime,fromTimeZone,toTimeZone)参数datetime必需的。需要处理的日期时间。fr

MySQL CONVERT_TZ() 函数将一个时区的时间转为另一个时区的时间并返回。

CONVERT_TZ() 语法

这是 MySQL CONVERT_TZ() 函数的语法:

CONVERT_TZ(datetime, fromTimeZone, toTimeZone)

参数

  • datetime

    必需的。需要处理的日期时间。

  • fromTimeZone

    必需的。当前时区的标识。

  • toTimeZone

    必需的。新的时区的标识。

fromTimeZonetoTimeZone 支持的格式包括:

  • 使用 SYSTEM 意味着和当前系统的时区一样。
  • 使用 +/-[H]H:MM 意味着和 UTC 时间的偏移量,比如 '+10:00', '-6:00', '+05:30' 等。
  • 使用时区的名称,比如:'Europe/Helsinki', 'US/Eastern', 'MET', 'GMT'

返回值

CONVERT_TZ() 函数返回新时区的日期时间。

如果参数错误或者为 NULLCONVERT_TZ() 函数将返回 NULL

CONVERT_TZ() 示例

这里是几个 CONVERT_TZ() 函数的示例。

SELECT
    CONVERT_TZ('2021-12-01 12:00:00', 'GMT', 'MET'),
    CONVERT_TZ('2021-12-01 12:00:00', 'GMT', '+01:00'),
    CONVERT_TZ('2021-12-01 12:00:00', 'GMT', '-01:00'),
    CONVERT_TZ('2021-12-01 12:00:00', 'GMT', '-03:00')\G
   CONVERT_TZ('2021-12-01 12:00:00', 'GMT', 'MET'): 2021-12-01 13:00:00
CONVERT_TZ('2021-12-01 12:00:00', 'GMT', '+01:00'): 2021-12-01 13:00:00
CONVERT_TZ('2021-12-01 12:00:00', 'GMT', '-01:00'): 2021-12-01 11:00:00
CONVERT_TZ('2021-12-01 12:00:00', 'GMT', '-03:00'): 2021-12-01 09:00:00

CURDATE() 函数

MySQLCURDATE()函数按YYYY-MM-DD或YYYYMMDD格式返回系统的当前日期。CURDATE()函数与CURRENT_DATE()函数完全相同。CURDATE()语法这是MySQLCURDATE()函数的语法:CURDATE()CURDATE()示例返回系统的当前日期。SELECT

MySQL CURDATE() 函数按 YYYY-MM-DDYYYYMMDD 格式返回系统的当前日期。

CURDATE() 函数与 CURRENT_DATE() 函数完全相同。

CURDATE() 语法

这是 MySQL CURDATE() 函数的语法:

CURDATE()

CURDATE() 示例

返回系统的当前日期。

SELECT
    CURDATE(),
    CURDATE() + 0;
+------------+---------------+
| CURDATE()  | CURDATE() + 0 |
+------------+---------------+
| 2022-04-12 |      20220412 |
+------------+---------------+

注意: CURDATE() + 0 的结果为 YYYYMMDD 格式。

CURDATE() + N 意味着当前日期加上 N 天。比如,系统当前日期加 1 天:

SELECT CURDATE() + 1;
+---------------+
| CURDATE() + 1 |
+---------------+
|      20220413 |
+---------------+

CURRENT_DATE() 函数

MySQLCURRENT_DATE()函数按YYYY-MM-DD格式返回系统的当前日期。CURDATE()函数与CURRENT_DATE()函数完全相同。CURRENT_DATE()语法这是MySQLCURRENT_DATE()函数的语法:CURRENT_DATECURRENT_DATE()CURR

MySQL CURRENT_DATE() 函数按 YYYY-MM-DD 格式返回系统的当前日期。

CURDATE() 函数与 CURRENT_DATE() 函数完全相同。

CURRENT_DATE() 语法

这是 MySQL CURRENT_DATE() 函数的语法:

CURRENT_DATE
CURRENT_DATE()

CURRENT_DATE() 示例

返回系统的当前日期。

SELECT
    CURRENT_DATE,
    CURRENT_DATE(),
    CURRENT_DATE() + 0;
+--------------+----------------+--------------------+
| CURRENT_DATE | CURRENT_DATE() | CURRENT_DATE() + 0 |
+--------------+----------------+--------------------+
| 2022-04-12   | 2022-04-12     |           20220412 |
+--------------+----------------+--------------------+

注意: CURRENT_DATE() + 0 的结果为 YYYYMMDD 格式。

CURRENT_DATE() + N 意味着当前日期加上 N 天。比如,系统当前日期加 1 天:

SELECT CURRENT_DATE() + 1;
+--------------------+
| CURRENT_DATE() + 1 |
+--------------------+
|           20220413 |

CURRENT_TIME() 函数

MySQLCURRENT_TIME()函数按hh:mm:ss格式返回系统的当前时间。CURRENT_TIME()函数与CURTIME()函数完全相同。CURRENT_TIME()语法这是MySQLCURRENT_TIME()函数的语法:CURRENT_TIME()CURRENT_TIME()示例返回

MySQL CURRENT_TIME() 函数按 hh:mm:ss 格式返回系统的当前时间。

CURRENT_TIME() 函数与 CURTIME() 函数完全相同。

CURRENT_TIME() 语法

这是 MySQL CURRENT_TIME() 函数的语法:

CURRENT_TIME()

CURRENT_TIME() 示例

返回系统的当前时间。

SELECT 
    CURRENT_TIME,
    CURRENT_TIME(),
    CURRENT_TIME() + 0;
+--------------+----------------+--------------------+
| CURRENT_TIME | CURRENT_TIME() | CURRENT_TIME() + 0 |
+--------------+----------------+--------------------+
| 02:11:03     | 02:11:03       |              21103 |
+--------------+----------------+--------------------+

注意: CURRENT_TIME() + 0 的结果为 hhmmss 格式。

CURRENT_TIME() + N 意味着当前时间加上 N 秒。比如,系统当前时间加 1 秒:

SELECT CURRENT_TIME(), CURRENT_TIME() + 1;
+----------------+--------------------+
| CURRENT_TIME() | CURRENT_TIME() + 1 |
+----------------+--------------------+
| 02:09:39       |              20940 |
+----------------+--------------------+

CURRENT_TIMESTAMP() 函数

MySQLCURRENT_TIMESTAMP()函数按YYYY-MM-DDhh:mm:ss格式返回当前时间和日期。CURRENT_TIMESTAMP()函数与NOW()函数完全相同。CURRENT_TIMESTAMP()语法这是MySQLCURRENT_TIMESTAMP()函数的语法:CURREN

MySQL CURRENT_TIMESTAMP() 函数按 YYYY-MM-DD hh:mm:ss 格式返回当前时间和日期。

CURRENT_TIMESTAMP() 函数与 NOW() 函数完全相同。

CURRENT_TIMESTAMP() 语法

这是 MySQL CURRENT_TIMESTAMP() 函数的语法:

CURRENT_TIMESTAMP
CURRENT_TIMESTAMP()

CURRENT_TIMESTAMP() 示例

返回系统的当前时间。

SELECT CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP() + 1;
+---------------------+-------------------------+
| CURRENT_TIMESTAMP() | CURRENT_TIMESTAMP() + 1 |
+---------------------+-------------------------+
| 2022-04-12 02:29:32 |          20220412022933 |
+---------------------+-------------------------+

CURTIME() 函数

MySQLCURTIME()函数按hh:mm:ss格式返回系统的当前时间。CURTIME()函数与CURRENT_TIME()函数完全相同。CURTIME()语法这是MySQLCURTIME()函数的语法:CURTIME()CURTIME()示例返回系统的当前时间。SELECTCURTIME(),C

MySQL CURTIME() 函数按 hh:mm:ss 格式返回系统的当前时间。

CURTIME() 函数与 CURRENT_TIME() 函数完全相同。

CURTIME() 语法

这是 MySQL CURTIME() 函数的语法:

CURTIME()

CURTIME() 示例

返回系统的当前时间。

SELECT CURTIME(), CURTIME() + 0;
+-----------+---------------+
| CURTIME() | CURTIME() + 0 |
+-----------+---------------+
| 02:04:35  |         20435 |
+-----------+---------------+

注意: CURTIME() + 0 的结果为 hhmmss 格式。

CURTIME() + N 意味着当前时间加上 N 秒。比如,系统当前时间加 1 秒:

SELECT CURTIME(), CURTIME() + 1;
+-----------+---------------+
| CURTIME() | CURTIME() + 1 |
+-----------+---------------+
| 02:06:09  |         20610 |
+-----------+---------------+

DATE() 函数

MySQLDATE()函数从日期时间表达式中提取日期部分并返回。DATE()语法这是MySQLDATE()函数的语法:DATE(expr)参数expr必需的。一个日期或者日期时间表达式。返回值MySQLDATE()函数返回指定的日期或者日期时间表达式中的日期部分。如果指定的表达式不是一个合法的日期或

MySQL DATE() 函数从日期时间表达式中提取日期部分并返回。

DATE() 语法

这是 MySQL DATE() 函数的语法:

DATE(expr)

参数

  • expr

    必需的。一个日期或者日期时间表达式。

返回值

MySQL DATE() 函数返回指定的日期或者日期时间表达式中的日期部分。

如果指定的表达式不是一个合法的日期或者日期时间,DATE() 函数将返回 NULL

如果参数为 NULLDATE() 函数将返回 NULL

DATE() 示例

这里是几个 DATE() 函数的示例。

SELECT
    DATE('2022-02-28'),
    DATE('2022-02-28 10:10:10'),
    DATE(NOW()),
    DATE('2022-02-30'),
    DATE('Not A Date'),
    DATE(NULL)\G
         DATE('2022-02-28'): 2022-02-28
DATE('2022-02-28 10:10:10'): 2022-02-28
                DATE(NOW()): 2022-04-13
         DATE('2022-02-30'): NULL
         DATE('Not A Date'): NULL
                 DATE(NULL): NULL

DATE_ADD() 函数

MySQLDATE_ADD()函数在指定的日期/时间上加上指定到时间间隔加并返回新的日期/时间。DATE_ADD()语法这是MySQLDATE_ADD()函数的语法:DATE_ADD(date,INTERVALvalueunit)参数date必需的。需要操作的日期。value必需的。时间/日期间隔。

MySQL DATE_ADD() 函数在指定的日期/时间上加上指定到时间间隔加并返回新的日期/时间。

DATE_ADD() 语法

这是 MySQL DATE_ADD() 函数的语法:

DATE_ADD(date, INTERVAL value unit)

参数

  • date

    必需的。需要操作的日期。

  • value

    必需的。时间/日期间隔。正数和负数都是允许的。

  • unit

    必需的。时间/日期间隔的单位。

时间/日期间隔的单位可以是以下值中的一个:

  • MICROSECOND
  • SECOND
  • MINUTE
  • HOUR
  • DAY
  • WEEK
  • MONTH
  • QUARTER
  • YEAR
  • SECOND_MICROSECOND
  • MINUTE_MICROSECOND
  • MINUTE_SECOND
  • HOUR_MICROSECOND
  • HOUR_SECOND
  • HOUR_MINUTE
  • DAY_MICROSECOND
  • DAY_SECOND
  • DAY_MINUTE
  • DAY_HOUR
  • YEAR_MONTH

返回值

DATE_ADD() 函数指定的日期/时间添加指定的时间间隔,并返回一个新的日期/时间。DATE_ADD() 函数的返回值和参数有关:

  • 如果 date 参数是 DATE 类型,并且时间间隔为 YEAR, MONTH 或者 DAY,返回 DATE
  • 如果 date 参数是 DATE 类型,并且时间间隔为 HOURS, MINUTES 或者 SECONDS,返回 DATETIME
  • 如果 date 参数是 DATETIME 类型,返回 DATETIME
  • 如果 date 参数是 TIME 类型,并且时间间隔为 YEAR, MONTH 或者 DAY,返回 DATETIME
  • 如果 date 参数是 TIME 类型,并且计算只涉及 HOURS, MINUTESSECONDS 部分,返回 TIME。(开始于 MySQL 8.0.28)
  • 其他情况下返回字符串。

DATE_ADD() 示例

这里是几个 DATE_ADD() 函数的示例。

示例 1

SELECT
    DATE_ADD('2020-06-10', 10),
    DATE_ADD('2020-06-10', -10)\G
 DATE_ADD('2020-06-10', 10): 2020-06-20
DATE_ADD('2020-06-10', -10): 2020-05-31

示例 2

SELECT
    DATE_ADD('2020-06-10', INTERVAL 10 DAY),
    DATE_ADD('2020-06-10', INTERVAL 10 HOUR)\G
 DATE_ADD('2020-06-10', INTERVAL 10 DAY): 2020-06-20
DATE_ADD('2020-06-10', INTERVAL 10 HOUR): 2020-06-10 10:00:00

示例 3

SELECT
    DATE_ADD('2020-06-10 10:00:00', INTERVAL 10 HOUR),
    DATE_ADD('2020-06-10 10:00:00', INTERVAL 10 MINUTE)\G
  DATE_ADD('2020-06-10 10:00:00', INTERVAL 10 HOUR): 2020-06-10 20:00:00
DATE_ADD('2020-06-10 10:00:00', INTERVAL 10 MINUTE): 2020-06-10 10:10:00

示例 4

SELECT
    DATE_ADD(CURDATE(), INTERVAL 10 HOUR),
    DATE_ADD(NOW(), INTERVAL 10 MINUTE)\G
DATE_ADD(CURDATE(), INTERVAL 10 HOUR): 2022-04-11 10:00:00
  DATE_ADD(NOW(), INTERVAL 10 MINUTE): 2022-04-11 08:35:42

这里,我们使用了 CURDATE() 函数返回当前的日期,使用 NOW() 函数返回当前日期时间。

DATE_FORMAT() 函数

MySQLDATE_FORMAT()函数按照指定的格式格式化日期时间。DATE_FORMAT()语法这是MySQLDATE_FORMAT()函数的语法:DATE_FORMAT(date,format)参数date必需的。需要格式化的日期。format必需的。格式化模式字符串。下表整理了format中

MySQL DATE_FORMAT() 函数按照指定的格式格式化日期时间。

DATE_FORMAT() 语法

这是 MySQL DATE_FORMAT() 函数的语法:

DATE_FORMAT(date, format)

参数

  • date

    必需的。需要格式化的日期。

  • format

    必需的。格式化模式字符串。

下表整理了 format 中可采用的格式化符号:

符号说明
%a星期的缩写 (SunSat)
%b月份的缩写 (JanDec)
%c月份数字 (012)
%D带有英语前缀的月份中的每天 (0th, 1st, 2nd, 3rd, …)
%d月份中的每天的两位数字表示 (0031)
%e月份中的每天的数字表示 (031)
%f微秒 (000000999999)
%H小时 (0023)
%h小时 (0112)
%I小时 (0112)
%i分钟 (0059)
%j一年中的每天 (001366)
%k小时 (023)
%l小时 (112)
%M月份名称 (JanuaryDecember)
%m两位数字月份 (0012)
%pAM 或者 PM
%r十二小时制时间 (hh:mm:ss 后跟 AMPM)
%S秒 (0059)
%s秒 (0059)
%T二十四小时制时间 (hh:mm:ss)
%U一年中的星期 (0053), 每周的开始是星期天; WEEK() 函数中的 mode 0
%u一年中的星期 (0053), 每周的开始是星期一; WEEK() 函数中的 mode 1
%V一年中的星期 (0153), 每周的开始是星期天; WEEK() 函数中的 mode 2, 用于 %X
%v一年中的星期 (0153), 每周的开始是星期一; WEEK() 函数中的 mode 3, 用于 %x
%W星期的名称 (SundaySaturday)
%w星期中的每天 (0=星期天…6=星期六)
%X一年中的星期,每周的开始是星期天,四位数字,用于 %V
%x一年中的星期,每周的开始是星期一,四位数字,用于 %v
%Y四位数字年份
%y两位数字年份
%%转义 %
%xx, 上面为列举的其他字符

返回值

DATE_FORMAT() 函数按照指定的格式格式化日期时间并返回格式化后的字符串。

如果其中任何一个参数为 NULLDATE_FORMAT() 函数将返回 NULL

DATE_FORMAT() 示例

这里是几个 DATE_FORMAT() 函数的示例。

示例 1: 格式化日期

SELECT
    DATE_FORMAT('2022-02-28', '%Y'),
    DATE_FORMAT('2014-02-28', '%W'),
    DATE_FORMAT('2022-02-01', '%M %d, %Y'),
    DATE_FORMAT('2022-02-01', '%M %e %Y'),
    DATE_FORMAT('2022-02-28', '%W, %M %e, %Y')\G
           DATE_FORMAT('2022-02-28', '%Y'): 2022
           DATE_FORMAT('2014-02-28', '%W'): Friday
    DATE_FORMAT('2022-02-01', '%M %d, %Y'): February 01, 2022
     DATE_FORMAT('2022-02-01', '%M %e %Y'): February 1 2022
DATE_FORMAT('2022-02-28', '%W, %M %e, %Y'): Monday, February 28, 2022

示例 2: 格式化日期和时间

SELECT NOW(), DATE_FORMAT(NOW(), '%Y%m%d%H%i%S')\G
                             NOW(): 2022-04-12 03:18:38
DATE_FORMAT(NOW(), '%Y%m%d%H%i%S'): 20220412031838

DATE_SUB() 函数

MySQLDATE_SUB()函数在指定的日期/时间上减去指定到时间间隔加并返回新的日期/时间。DATE_SUB()语法这是MySQLDATE_SUB()函数的语法:DATE_SUB(date,INTERVALvalueunit)参数date必需的。需要操作的日期。days必需的。在date上减去的

MySQL DATE_SUB() 函数在指定的日期/时间上减去指定到时间间隔加并返回新的日期/时间。

DATE_SUB() 语法

这是 MySQL DATE_SUB() 函数的语法:

DATE_SUB(date, INTERVAL value unit)

参数

  • date

    必需的。需要操作的日期。

  • days

    必需的。在 date 上减去的天数。

  • value

    必需的。时间/日期间隔。正数和负数都是允许的。

  • unit

    必需的。时间/日期间隔的单位。

时间/日期间隔的单位可以是以下值中的一个:

  • MICROSECOND
  • SECOND
  • MINUTE
  • HOUR
  • DAY
  • WEEK
  • MONTH
  • QUARTER
  • YEAR
  • SECOND_MICROSECOND
  • MINUTE_MICROSECOND
  • MINUTE_SECOND
  • HOUR_MICROSECOND
  • HOUR_SECOND
  • HOUR_MINUTE
  • DAY_MICROSECOND
  • DAY_SECOND
  • DAY_MINUTE
  • DAY_HOUR
  • YEAR_MONTH

返回值

DATE_SUB() 函数指定的日期/时间添加指定的时间间隔,并返回一个新的日期/时间。DATE_SUB() 函数的返回值和参数有关:

  • 如果 date 参数是 DATE 类型,并且时间间隔为 YEAR, MONTH 或者 DAY,返回 DATE
  • 如果 date 参数是 DATE 类型,并且时间间隔为 HOURS, MINUTES 或者 SECONDS,返回 DATETIME
  • 如果 date 参数是 DATETIME 类型,返回 DATETIME
  • 如果 date 参数是 TIME 类型,并且时间间隔为 YEAR, MONTH 或者 DAY,返回 DATETIME
  • 如果 date 参数是 TIME 类型,并且计算只涉及 HOURS, MINUTESSECONDS 部分,返回 TIME。(开始于 MySQL 8.0.28)
  • 其他情况下返回字符串。

DATE_SUB() 示例

这里是几个 DATE_SUB() 函数的示例。

示例 1

SELECT
    DATE_SUB('2020-06-10', 10),
    DATE_SUB('2020-06-10', -10)\G
 DATE_SUB('2020-06-10', 10): 2020-05-31
DATE_SUB('2020-06-10', -10): 2020-06-20

示例 2

SELECT
    DATE_SUB('2020-06-10', INTERVAL 10 DAY),
    DATE_SUB('2020-06-10', INTERVAL 10 HOUR)\G
 DATE_SUB('2020-06-10', INTERVAL 10 DAY): 2020-05-31
DATE_SUB('2020-06-10', INTERVAL 10 HOUR): 2020-06-09 14:00:00

示例 3

SELECT
    DATE_SUB('2020-06-10 10:00:00', INTERVAL 10 HOUR),
    DATE_SUB('2020-06-10 10:00:00', INTERVAL 10 MINUTE)\G
  DATE_SUB('2020-06-10 10:00:00', INTERVAL 10 HOUR): 2020-06-10 00:00:00
DATE_SUB('2020-06-10 10:00:00', INTERVAL 10 MINUTE): 2020-06-10 09:50:00

示例 4

SELECT
    DATE_SUB(CURDATE(), INTERVAL 10 HOUR),
    DATE_SUB(NOW(), INTERVAL 10 MINUTE)\G
DATE_SUB(CURDATE(), INTERVAL 10 HOUR): 2022-04-10 14:00:00
  DATE_SUB(NOW(), INTERVAL 10 MINUTE): 2022-04-11 08:56:43

这里,我们使用了 CURDATE() 函数返回当前的日期,使用 NOW() 函数返回当前日期时间。

DATEDIFF() 函数

MySQLDATEDIFF()函数返回两个日期值之间的天数。DATEDIFF()语法这是MySQLDATEDIFF()函数的语法:DATEDIFF(date1,date2)参数date1必需的。一个日期或者日期时间表达式。date2必需的。一个日期或者日期时间表达式。返回值MySQLDATEDIFF

MySQL DATEDIFF() 函数返回两个日期值之间的天数。

DATEDIFF() 语法

这是 MySQL DATEDIFF() 函数的语法:

DATEDIFF(date1, date2)

参数

  • date1

    必需的。一个日期或者日期时间表达式。

  • date2

    必需的。一个日期或者日期时间表达式。

返回值

MySQL DATEDIFF() 函数返回两个日期值之间的天数。DATEDIFF() 函数只比较 date1date2 的日期部分。如果 date1 的日期晚于 date2 的日期,它返回一个整数,否则返回一个负数或者 0。

如果指定的表达式不是一个合法的日期或者日期时间,DATEDIFF() 函数将返回 NULL

如果参数为 NULLDATEDIFF() 函数将返回 NULL

DATEDIFF() 示例

这里是几个 DATEDIFF() 函数的示例。

简单用法

SELECT
    DATEDIFF('2022-02-28', '2022-02-28'),
    DATEDIFF('2022-02-28', '2022-02-28 10:10:10'),
    DATEDIFF('2022-02-28 10:10:10', '2022-02-28'),
    DATEDIFF('2022-02-28', '2022-02-27'),
    DATEDIFF('2022-02-28', '2022-02-27 10:10:10'),
    DATEDIFF('2022-02-28 10:10:10', '2022-02-27'),
    DATEDIFF('2022-02-30', '2022-02-28 10:10:10'),
    DATEDIFF('Not A DATEDIFF', 'Not A DATEDIFF'),
    DATEDIFF(NULL, '2022-02-28')\G
         DATEDIFF('2022-02-28', '2022-02-28'): 0
DATEDIFF('2022-02-28', '2022-02-28 10:10:10'): 0
DATEDIFF('2022-02-28 10:10:10', '2022-02-28'): 0
         DATEDIFF('2022-02-28', '2022-02-27'): 1
DATEDIFF('2022-02-28', '2022-02-27 10:10:10'): 1
DATEDIFF('2022-02-28 10:10:10', '2022-02-27'): 1
DATEDIFF('2022-02-30', '2022-02-28 10:10:10'): NULL
 DATEDIFF('Not A DATEDIFF', 'Not A DATEDIFF'): NULL
                 DATEDIFF(NULL, '2022-02-28'): NULL

获取一个日期距今的天数

SELECT DATEDIFF(NOW(), '2022-02-28');
+-------------------------------+
| DATEDIFF(NOW(), '2022-02-28') |
+-------------------------------+
|                            44 |
+-------------------------------+

这里,我们使用了 NOW() 函数获取当前的时刻。除此之外,您还可以使用 CURDATE(), CURRENT_DATE(), SYSDATE()。比如:

SELECT
    DATEDIFF(NOW(), '2022-02-28'),
    DATEDIFF(CURDATE(), '2022-02-28'),
    DATEDIFF(CURRENT_DATE(), '2022-02-28'),
    DATEDIFF(SYSDATE(), '2022-02-28')\G
         DATEDIFF(NOW(), '2022-02-28'): 44
     DATEDIFF(CURDATE(), '2022-02-28'): 44
DATEDIFF(CURRENT_DATE(), '2022-02-28'): 44
     DATEDIFF(SYSDATE(), '2022-02-28'): 44

DAY() 函数

MySQLDAY()函数返回日期时间表达式中的代表月份中的一天的数字。此函数等同于DAYOFMONTH()函数。DAY()语法这是MySQLDAY()函数的语法:DAY(expr)参数expr必需的。一个日期或者日期时间表达式。返回值MySQLDAY()函数返回日期时间表达式中的代表月份中的一天的数

MySQL DAY() 函数返回日期时间表达式中的代表月份中的一天的数字。此函数等同于 DAYOFMONTH() 函数。

DAY() 语法

这是 MySQL DAY() 函数的语法:

DAY(expr)

参数

  • expr

    必需的。一个日期或者日期时间表达式。

返回值

MySQL DAY() 函数返回日期时间表达式中的代表月份中的一天的数字,从 1 到 31。

  • 如果给定的日期的天的部分为 0 ,比如: '0000-00-00''2008-00-00'DAY() 函数将返回 0
  • 如果指定的表达式不是一个合法的日期或者日期时间,DAY() 函数将返回 NULL
  • 如果参数为 NULLDAY() 函数将返回 NULL

DAY() 示例

这里是几个 DAY() 函数的示例。

SELECT
    DAY('2022-02-28'),
    DAY('2022-02-28 10:10:10'),
    DAY(NOW()),
    DAY('2022-02-00'),
    DAY('2022-02-30'),
    DAY('Not A DATE'),
    DAY(NULL)\G
         DAY('2022-02-28'): 28
DAY('2022-02-28 10:10:10'): 28
                DAY(NOW()): 13
         DAY('2022-02-00'): 0
         DAY('2022-02-30'): NULL
         DAY('Not A DATE'): NULL
                 DAY(NULL): NULL

DAYNAME() 函数

MySQLDAYNAME()函数返回给定日期的工作日名称。DAYNAME()语法这是MySQLDAYNAME()函数的语法:DAYNAME(expr)参数expr必需的。一个日期或者日期时间表达式。返回值MySQLDAYNAME()函数返回给定日期的工作日名称,返回值将是以下值中的一个:Monday

MySQL DAYNAME() 函数返回给定日期的工作日名称。

DAYNAME() 语法

这是 MySQL DAYNAME() 函数的语法:

DAYNAME(expr)

参数

  • expr

    必需的。一个日期或者日期时间表达式。

返回值

MySQL DAYNAME() 函数返回给定日期的工作日名称,返回值将是以下值中的一个: Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday

  • 如果指定的表达式不是一个合法的日期或者日期时间,DAYNAME() 函数将返回 NULL
  • 如果参数为 NULLDAYNAME() 函数将返回 NULL

DAYNAME() 示例

这里是几个 DAYNAME() 函数的示例。

SELECT
    DAYNAME('2022-02-21'),
    DAYNAME('2022-02-22'),
    DAYNAME('2022-02-23'),
    DAYNAME('2022-02-24'),
    DAYNAME('2022-02-25'),
    DAYNAME('2022-02-26'),
    DAYNAME('2022-02-27'),
    DAYNAME(NOW()),
    DAYNAME('2022-02-00'),
    DAYNAME('2022-02-30'),
    DAYNAME('Not A DATE'),
    DAYNAME(NULL)\G
DAYNAME('2022-02-21'): Monday
DAYNAME('2022-02-22'): Tuesday
DAYNAME('2022-02-23'): Wednesday
DAYNAME('2022-02-24'): Thursday
DAYNAME('2022-02-25'): Friday
DAYNAME('2022-02-26'): Saturday
DAYNAME('2022-02-27'): Sunday
       DAYNAME(NOW()): Wednesday
DAYNAME('2022-02-00'): NULL
DAYNAME('2022-02-30'): NULL
DAYNAME('Not A DATE'): NULL
        DAYNAME(NULL): NULL

如果要返回今天的工作日名称,请使用 NOW(), CURDATE(), CURRENT_DATE(), 或 SYSDATE() 中的任意一个。比如:

SELECT
    DAYNAME(NOW()),
    DAYNAME(CURDATE()),
    DAYNAME(CURRENT_DATE()),
    DAYNAME(SYSDATE())\G
         DAYNAME(NOW()): Wednesday
     DAYNAME(CURDATE()): Wednesday
DAYNAME(CURRENT_DATE()): Wednesday
     DAYNAME(SYSDATE()): Wednesday

注意,您的结果可能不同。

DAYOFMONTH() 函数

MySQLDAYOFMONTH()函数返回日期时间表达式中的代表月份中的一天的数字。此函数等同于DAY()函数。DAYOFMONTH()语法这是MySQLDAYOFMONTH()函数的语法:DAYOFMONTH(expr)参数expr必需的。一个日期或者日期时间表达式。返回值MySQLDAYOFMO

MySQL DAYOFMONTH() 函数返回日期时间表达式中的代表月份中的一天的数字。此函数等同于 DAY() 函数。

DAYOFMONTH() 语法

这是 MySQL DAYOFMONTH() 函数的语法:

DAYOFMONTH(expr)

参数

  • expr

    必需的。一个日期或者日期时间表达式。

返回值

MySQL DAYOFMONTH() 函数返回日期时间表达式中的代表月份中的一天的数字,从 1 到 31。

  • 如果给定的日期的天的部分为 0 ,比如: '0000-00-00''2008-00-00'DAYOFMONTH() 函数将返回 0
  • 如果指定的表达式不是一个合法的日期或者日期时间,DAYOFMONTH() 函数将返回 NULL
  • 如果参数为 NULLDAYOFMONTH() 函数将返回 NULL

DAYOFMONTH() 示例

这里是几个 DAYOFMONTH() 函数的示例。

SELECT
    DAYOFMONTH('2022-02-28'),
    DAYOFMONTH('2022-02-28 10:10:10'),
    DAYOFMONTH(NOW()),
    DAYOFMONTH('2022-02-00'),
    DAYOFMONTH('2022-02-30'),
    DAYOFMONTH('Not A DATE'),
    DAYOFMONTH(NULL)\G
         DAYOFMONTH('2022-02-28'): 28
DAYOFMONTH('2022-02-28 10:10:10'): 28
                DAYOFMONTH(NOW()): 13
         DAYOFMONTH('2022-02-00'): 0
         DAYOFMONTH('2022-02-30'): NULL
         DAYOFMONTH('Not A DATE'): NULL
                 DAYOFMONTH(NULL): NUL

DAYOFWEEK() 函数

MySQLDAYOFWEEK()函数返回给定日期的工作日的索引。DAYOFWEEK()语法这是MySQLDAYOFWEEK()函数的语法:DAYOFWEEK(expr)参数expr必需的。一个日期或者日期时间表达式。返回值MySQLDAYOFWEEK()函数返回给定日期的工作日的索引。它返回一个从1

MySQL DAYOFWEEK() 函数返回给定日期的工作日的索引。

DAYOFWEEK() 语法

这是 MySQL DAYOFWEEK() 函数的语法:

DAYOFWEEK(expr)

参数

  • expr

    必需的。一个日期或者日期时间表达式。

返回值

MySQL DAYOFWEEK() 函数返回给定日期的工作日的索引。它返回一个从 17 之间的数字,代表的含义如下:

  • 1 - 星期天
  • 2 - 星期一
  • 3 - 星期二
  • 4 - 星期三
  • 5 - 星期四
  • 6 - 星期五
  • 7 - 星期六

如果指定的表达式不是一个合法的日期或者日期时间,DAYOFWEEK() 函数将返回 NULL

如果参数为 NULLDAYOFWEEK() 函数将返回 NULL

DAYOFWEEK() 示例

这里是几个 DAYOFWEEK() 函数的示例。

SELECT
    DAYOFWEEK('2022-02-21'),
    DAYOFWEEK('2022-02-22'),
    DAYOFWEEK('2022-02-23'),
    DAYOFWEEK('2022-02-24'),
    DAYOFWEEK('2022-02-25'),
    DAYOFWEEK('2022-02-26'),
    DAYOFWEEK('2022-02-27'),
    DAYOFWEEK('2022-02-00'),
    DAYOFWEEK('2022-02-30'),
    DAYOFWEEK('Not A DATE'),
    DAYOFWEEK(NULL)\G
DAYOFWEEK('2022-02-21'): 2
DAYOFWEEK('2022-02-22'): 3
DAYOFWEEK('2022-02-23'): 4
DAYOFWEEK('2022-02-24'): 5
DAYOFWEEK('2022-02-25'): 6
DAYOFWEEK('2022-02-26'): 7
DAYOFWEEK('2022-02-27'): 1
DAYOFWEEK('2022-02-00'): NULL
DAYOFWEEK('2022-02-30'): NULL
DAYOFWEEK('Not A DATE'): NULL

DAYOFYEAR() 函数

MySQLDAYOFYEAR()函数返回一个从1到366代表给定日期是一年中的第几天的数字。DAYOFYEAR()语法这是MySQLDAYOFYEAR()函数的语法:DAYOFYEAR(expr)参数expr必需的。一个日期或者日期时间表达式。返回值MySQLDAYOFYEAR()函数返回一个从1到

MySQL DAYOFYEAR() 函数返回一个从 1366 代表给定日期是一年中的第几天的数字。

DAYOFYEAR() 语法

这是 MySQL DAYOFYEAR() 函数的语法:

DAYOFYEAR(expr)

参数

  • expr

    必需的。一个日期或者日期时间表达式。

返回值

MySQL DAYOFYEAR() 函数返回一个从 1366 代表给定日期是一年中的第几天的数字。

  • 如果指定的表达式不是一个合法的日期或者日期时间,DAYOFYEAR() 函数将返回 NULL
  • 如果参数为 NULLDAYOFYEAR() 函数将返回 NULL

DAYOFYEAR() 示例

这里是几个 DAYOFYEAR() 函数的示例。

SELECT
    DAYOFYEAR('2022-01-01'),
    DAYOFYEAR('2022-01-31'),
    DAYOFYEAR('2022-02-28 10:10:10'),
    DAYOFYEAR('2022-02-00'),
    DAYOFYEAR('2022-02-30'),
    DAYOFYEAR('Not A DATE'),
    DAYOFYEAR(NULL)\G
         DAYOFYEAR('2022-01-01'): 1
         DAYOFYEAR('2022-01-31'): 31
DAYOFYEAR('2022-02-28 10:10:10'): 59
         DAYOFYEAR('2022-02-00'): NULL
         DAYOFYEAR('2022-02-30'): NULL
         DAYOFYEAR('Not A DATE'): NULL
                 DAYOFYEAR(NULL): NULL

如果要返回今天是一年中第几天,请使用 NOW(), CURDATE(), CURRENT_DATE(), 或 SYSDATE() 中的任意一个。比如:

SELECT
    DAYOFYEAR(NOW()),
    DAYOFYEAR(CURDATE()),
    DAYOFYEAR(CURRENT_DATE()),
    DAYOFYEAR(SYSDATE())\G
         DAYOFYEAR(NOW()): 103
     DAYOFYEAR(CURDATE()): 103
DAYOFYEAR(CURRENT_DATE()): 103
     DAYOFYEAR(SYSDATE()): 103

注意,您的结果可能不同。

EXTRACT() 函数

MySQLEXTRACT()函数从指定的日期/时间中提取指定的部分并返回。EXTRACT()语法这是MySQLEXTRACT()函数的语法:EXTRACT(unitFROMdate)参数unit必需的。需要提取的部分的标识。date必需的。一个日期或者日期时间表达式。unit可以是以下值中的一个:M

MySQL EXTRACT() 函数从指定的日期/时间中提取指定的部分并返回。

EXTRACT() 语法

这是 MySQL EXTRACT() 函数的语法:

EXTRACT(unit FROM date)

参数

  • unit

    必需的。需要提取的部分的标识。

  • date

    必需的。一个日期或者日期时间表达式。

unit 可以是以下值中的一个:

  • MICROSECOND
  • SECOND
  • MINUTE
  • HOUR
  • DAY
  • WEEK
  • MONTH
  • QUARTER
  • YEAR
  • SECOND_MICROSECOND
  • MINUTE_MICROSECOND
  • MINUTE_SECOND
  • HOUR_MICROSECOND
  • HOUR_SECOND
  • HOUR_MINUTE
  • DAY_MICROSECOND
  • DAY_SECOND
  • DAY_MINUTE
  • DAY_HOUR
  • YEAR_MONTH

返回值

MySQL EXTRACT() 函数函数从指定的日期/时间中提取指定的部分并返回。

如果指定的表达式不是一个合法的日期或者日期时间,EXTRACT() 函数将返回 NULL

如果参数为 NULLEXTRACT() 函数将返回 NULL

EXTRACT() 示例

这里是几个 EXTRACT() 函数的示例。

SELECT
    EXTRACT(YEAR FROM '2022-02-28'),
    EXTRACT(MONTH FROM '2022-02-28'),
    EXTRACT(DAY FROM '2022-02-28'),
    EXTRACT(HOUR FROM '10:11:12'),
    EXTRACT(MINUTE FROM '10:11:12'),
    EXTRACT(SECOND FROM '10:11:12'),
    EXTRACT(HOUR FROM '2022-02-28 10:11:12'),
    EXTRACT(MINUTE FROM '2022-02-28 10:11:12'),
    EXTRACT(SECOND FROM '2022-02-28 10:11:12')\G
           EXTRACT(YEAR FROM '2022-02-28'): 2022
          EXTRACT(MONTH FROM '2022-02-28'): 2
            EXTRACT(DAY FROM '2022-02-28'): 28
             EXTRACT(HOUR FROM '10:11:12'): 10
           EXTRACT(MINUTE FROM '10:11:12'): 11
           EXTRACT(SECOND FROM '10:11:12'): 12
  EXTRACT(HOUR FROM '2022-02-28 10:11:12'): 10
EXTRACT(MINUTE FROM '2022-02-28 10:11:12'): 11
EXTRACT(SECOND FROM '2022-02-28 10:11:12'): 12

HOUR() 函数

MySQLHOUR()函数提取并返回时间的小时部分。HOUR()语法这是MySQLHOUR()函数的语法:HOUR(time)参数time必需的。一个时间或者日期时间表达式。返回值MySQLHOUR()函数提取指定的时间或者日期时间中的小时部分并作为数字返回。如果time中没有小时部分,HOUR()

MySQL HOUR() 函数提取并返回时间的小时部分。

HOUR() 语法

这是 MySQL HOUR() 函数的语法:

HOUR(time)

参数

  • time

    必需的。一个时间或者日期时间表达式。

返回值

MySQL HOUR() 函数提取指定的时间或者日期时间中的小时部分并作为数字返回。

  • 如果 time 中没有小时部分,HOUR() 函数将返回 0
  • 如果参数为 NULLHOUR() 函数将返回 NULL
  • 因为 MySQL 支持的最大时间为 838:59:59HOUR() 函数的最大数是 838

HOUR() 示例

这里是几个 HOUR() 函数的示例。

SELECT
    HOUR('10:10:10'),
    HOUR('2022-02-28 10:10:10'),
    HOUR('123:10:10'),
    HOUR('1234:10:10'),
    HOUR('2022-02-00'),
    HOUR('2022-02-30'),
    HOUR('Not A DATE'),
    HOUR(NULL)\G
           HOUR('10:10:10'): 10
HOUR('2022-02-28 10:10:10'): 10
          HOUR('123:10:10'): 123
         HOUR('1234:10:10'): 838
         HOUR('2022-02-00'): 0
         HOUR('2022-02-30'): 0
         HOUR('Not A DATE'): NULL
                 HOUR(NULL): NULL

这里:

HOUR('123:10:10') 返回了 123HOUR('1234:10:10') 返回了 838。这是因为 MySQL 支持的最大时间是 838:59:59

虽然 '2022-02-00''2022-02-30 是个不正确的时间,但是 HOUR() 函数仍返回了 0

LAST_DAY() 函数

MySQLLAST_DAY()函数返回指定的日期或者日期时间所在当月的最后一天。LAST_DAY()语法这是MySQLLAST_DAY()函数的语法:LAST_DAY(date)参数date必需的。一个日期或者日期时间表达式。返回值MySQLLAST_DAY()函数返回指定的日期或者日期时间所在当月

MySQL LAST_DAY() 函数返回指定的日期或者日期时间所在当月的最后一天。

LAST_DAY() 语法

这是 MySQL LAST_DAY() 函数的语法:

LAST_DAY(date)

参数

  • date

    必需的。一个日期或者日期时间表达式。

返回值

MySQL LAST_DAY() 函数返回指定的日期或者日期时间所在当月的最后一天。

如果参数为不合法的日期或者为 NULLLAST_DAY() 函数将返回 NULL

LAST_DAY() 示例

这里是几个 LAST_DAY() 函数的示例。

SELECT
    LAST_DAY('2019-02-01'),
    LAST_DAY('2020-02-01'),
    LAST_DAY('2021-02-01'),
    LAST_DAY('2022-02-01'),
    LAST_DAY('2022-02-01 10:11:12')\G
         LAST_DAY('2019-02-01'): 2019-02-28
         LAST_DAY('2020-02-01'): 2020-02-29
         LAST_DAY('2021-02-01'): 2021-02-28
         LAST_DAY('2022-02-01'): 2022-02-28
LAST_DAY('2022-02-01 10:11:12'): 2022-02-28

LOCALTIME() 函数

MySQLLOCALTIME()函数按YYYY-MM-DDhh:mm:ss格式返回当前时间和日期。LOCALTIME()函数与NOW()函数完全相同。LOCALTIME()语法这是MySQLLOCALTIME()函数的语法:LOCALTIMELOCALTIME()LOCALTIME()示例返回系统的

MySQL LOCALTIME() 函数按 YYYY-MM-DD hh:mm:ss 格式返回当前时间和日期。

LOCALTIME() 函数与 NOW() 函数完全相同。

LOCALTIME() 语法

这是 MySQL LOCALTIME() 函数的语法:

LOCALTIME
LOCALTIME()

LOCALTIME() 示例

返回系统的当前时间。

SELECT 
    LOCALTIME,
    LOCALTIME(),
    LOCALTIME() + 1;
+---------------------+---------------------+-----------------+
| LOCALTIME           | LOCALTIME()         | LOCALTIME() + 1 |
+---------------------+---------------------+-----------------+
| 2022-04-12 02:34:12 | 2022-04-12 02:34:12 |  20220412023413 |
+---------------------+---------------------+-----------------+

MAKEDATE() 函数

MySQLMAKEDATE()函数根据年份和一年中天数创建一个日期并返回。MAKEDATE()语法这是MySQLMAKEDATE()函数的语法:MAKEDATE(year,day_of_year)参数year必需的。表示年份的4位数字。day_of_year必需的。一年中的第几天。应该大于0。返回值

MySQL MAKEDATE() 函数根据年份和一年中天数创建一个日期并返回。

MAKEDATE() 语法

这是 MySQL MAKEDATE() 函数的语法:

MAKEDATE(year, day_of_year)

参数

  • year

    必需的。表示年份的 4 位数字。

  • day_of_year

    必需的。一年中的第几天。应该大于 0

返回值

MySQL MAKEDATE() 函数根据年份和一年中天数创建一个日期并返回。

如果 day_of_year 等于或小于 0MAKEDATE() 函数将返回 NULL

MAKEDATE() 示例

这里是几个 MAKEDATE() 函数的示例。

SELECT
    MAKEDATE(2022, 1),
    MAKEDATE(2022, 31),
    MAKEDATE(2022, 32),
    MAKEDATE(2022, 0)\G
 MAKEDATE(2022, 1): 2022-01-01
MAKEDATE(2022, 31): 2022-01-31
MAKEDATE(2022, 32): 2022-02-01
 MAKEDATE(2022, 0): NULL

MINUTE() 函数

MySQLMINUTE()函数提取并返回时间的分钟部分。MINUTE()语法这是MySQLMINUTE()函数的语法:MINUTE(time)参数time必需的。一个时间或者日期时间表达式。返回值MySQLMINUTE()函数提取并返回时间的分钟部分,MINUTE()函数的返回值介于0到59之间。如

MySQL MINUTE() 函数提取并返回时间的分钟部分。

MINUTE() 语法

这是 MySQL MINUTE() 函数的语法:

MINUTE(time)

参数

  • time

    必需的。一个时间或者日期时间表达式。

返回值

MySQL MINUTE() 函数提取并返回时间的分钟部分,MINUTE() 函数的返回值介于 059 之间。

如果参数为 NULLMINUTE() 函数将返回 NULL

MINUTE() 示例

这里是几个 MINUTE() 函数的示例。

SELECT
    MINUTE('10:11:12'),
    MINUTE('2022-02-28 10:11:12');
+--------------------+-------------------------------+
| MINUTE('10:11:12') | MINUTE('2022-02-28 10:11:12') |
+--------------------+-------------------------------+
|                 11 |                            11 |
+--------------------+-------------------------------+

MONTH() 函数

MySQLMONTH()函数提取日期的月份部分并作为数字返回。MONTH()语法这是MySQLMONTH()函数的语法:MONTH(date)参数date必需的。一个日期或者日期时间表达式。返回值MySQLMONTH()函数提取并返回作为日期的月份部分的数字。MONTH()函数的返回值介于1到12之

MySQL MONTH() 函数提取日期的月份部分并作为数字返回。

MONTH() 语法

这是 MySQL MONTH() 函数的语法:

MONTH(date)

参数

  • date

    必需的。一个日期或者日期时间表达式。

返回值

MySQL MONTH() 函数提取并返回作为日期的月份部分的数字。MONTH() 函数的返回值介于 112 之间。

如果参数为 NULLMONTH() 函数将返回 NULL

MONTH() 示例

这里是几个 MONTH() 函数的示例。

SELECT
    MONTH('2022-02-28'),
    MONTH('2022-02-28 10:11:12');
+---------------------+------------------------------+
| MONTH('2022-02-28') | MONTH('2022-02-28 10:11:12') |
+---------------------+------------------------------+
|                   2 |                            2 |
+---------------------+------------------------------+

MONTHNAME() 函数

ySQLMONTHNAME()函数返回给定日期的月份的名字。MONTHNAME()语法这是MySQLMONTHNAME()函数的语法:MONTHNAME(date)参数date必需的。一个日期或者日期时间表达式。返回值MySQLMONTHNAME()函数返回给定日期的月份的名字。MONTHNAME

MySQL MONTHNAME() 函数返回给定日期的月份的名字。

MONTHNAME() 语法

这是 MySQL MONTHNAME() 函数的语法:

MONTHNAME(date)

参数

  • date

    必需的。一个日期或者日期时间表达式。

返回值

MySQL MONTHNAME() 函数返回给定日期的月份的名字。MONTHNAME() 返回值将是以下值中的一个: January, February, March, April, May, June, July, August, September, October, November, December

  • 如果指定的表达式不是一个合法的日期或者日期时间,MONTHNAME() 函数将返回 NULL
  • 如果参数为 NULLMONTHNAME() 函数将返回 NULL

MONTHNAME() 示例

这里是几个 MONTHNAME() 函数的示例。

SELECT
    MONTHNAME('2021-01-01'),
    MONTHNAME('2021-02-01'),
    MONTHNAME('2021-03-01'),
    MONTHNAME('2021-04-01'),
    MONTHNAME('2021-05-01'),
    MONTHNAME('2021-06-01'),
    MONTHNAME('2021-07-01'),
    MONTHNAME('2021-08-01'),
    MONTHNAME('2021-09-01'),
    MONTHNAME('2021-10-01'),
    MONTHNAME('2021-11-01'),
    MONTHNAME('2021-12-01'),
    MONTHNAME('Not A DATE'),
    MONTHNAME(NULL)\G
MONTHNAME('2021-01-01'): January
MONTHNAME('2021-02-01'): February
MONTHNAME('2021-03-01'): March
MONTHNAME('2021-04-01'): April
MONTHNAME('2021-05-01'): May
MONTHNAME('2021-06-01'): June
MONTHNAME('2021-07-01'): July
MONTHNAME('2021-08-01'): August
MONTHNAME('2021-09-01'): September
MONTHNAME('2021-10-01'): October
MONTHNAME('2021-11-01'): November
MONTHNAME('2021-12-01'): December
MONTHNAME('Not A DATE'): NULL
        MONTHNAME(NULL): NULL

如果要返回当前月份的名称,请使用 NOW(), CURDATE(), CURRENT_DATE(), 或 SYSDATE() 中的任意一个。比如:

SELECT
    MONTHNAME(NOW()),
    MONTHNAME(CURDATE()),
    MONTHNAME(CURRENT_DATE()),
    MONTHNAME(SYSDATE())\G
         MONTHNAME(NOW()): April
     MONTHNAME(CURDATE()): April
MONTHNAME(CURRENT_DATE()): April
     MONTHNAME(SYSDATE()): April

NOW() 函数

MySQLNOW()函数按YYYY-MM-DDhh:mm:ss格式返回当前时间和日期。与SYSDATE()函数不同,NOW()函数返回的是所在的语句、函数、存储过程开始执行的时间,并不一定是执行的NOW()函数时确切的系统时间。NOW()语法这是MySQLNOW()函数的语法:NOW()NOW()示

MySQL NOW() 函数按 YYYY-MM-DD hh:mm:ss 格式返回当前时间和日期。

SYSDATE() 函数不同,NOW() 函数返回的是所在的语句、函数、存储过程开始执行的时间,并不一定是执行的 NOW() 函数时确切的系统时间。

NOW() 语法

这是 MySQL NOW() 函数的语法:

NOW()

NOW() 示例

返回系统的当前时间。

SELECT NOW(), NOW() + 1;
+---------------------+----------------+
| NOW()               | NOW() + 1      |
+---------------------+----------------+
| 2022-04-12 02:19:34 | 20220412021935 |
+---------------------+----------------+

注意: NOW() + 0 的结果为 YYYYMMDDhhmmss 格式。NOW() + N 意味着当前时间加上 N 秒。

SYSDATE() 函数不同,NOW() 函数返回的是所在的语句、函数、存储过程开始执行的时间,并不一定是执行的 NOW() 语句时确切的系统时间。请看下面的示例:

SELECT
    NOW(),
    SYSDATE(),
    SLEEP(2),
    NOW(),
    SYSDATE()\G
    NOW(): 2022-04-12 02:23:14
SYSDATE(): 2022-04-12 02:23:14
 SLEEP(2): 0
    NOW(): 2022-04-12 02:23:14
SYSDATE(): 2022-04-12 02:23:16

PERIOD_ADD() 函数

MySQLPERIOD_ADD()函数在指定年月上加上指定的月数将结果作为年月返回。PERIOD_ADD()语法这是MySQLPERIOD_ADD()函数的语法:PERIOD_ADD(period,month_number)参数period必需的。使用YYYYMM或YYMM格式表示的时期。month

MySQL PERIOD_ADD() 函数在指定年月上加上指定的月数将结果作为年月返回。

PERIOD_ADD() 语法

这是 MySQL PERIOD_ADD() 函数的语法:

PERIOD_ADD(period, month_number)

参数

  • period

    必需的。使用 YYYYMMYYMM 格式表示的时期。

  • month_number

    必需的。需要加到 period 上的月数。

返回值

MySQL PERIOD_ADD() 函数在指定年月上加上指定的月数将结果作为年月返回。 PERIOD_ADD() 函数返回值是一个数字,格式是 YYYYMM

如果参数为 NULLPERIOD_ADD() 函数将返回 NULL

PERIOD_ADD() 示例

这里是几个 PERIOD_ADD() 函数的示例。

SELECT
    PERIOD_ADD(202201, 1),
    PERIOD_ADD(202201, 2),
    PERIOD_ADD(202201, 3),
    PERIOD_ADD(202201, 4),
    PERIOD_ADD(202201, 5),
    PERIOD_ADD(202201, 6),
    PERIOD_ADD(202201, 7),
    PERIOD_ADD(202201, 8),
    PERIOD_ADD(202201, 9),
    PERIOD_ADD(202201, 10),
    PERIOD_ADD(202201, 11),
    PERIOD_ADD(202201, 12)\G
 PERIOD_ADD(202201, 1): 202202
 PERIOD_ADD(202201, 2): 202203
 PERIOD_ADD(202201, 3): 202204
 PERIOD_ADD(202201, 4): 202205
 PERIOD_ADD(202201, 5): 202206
 PERIOD_ADD(202201, 6): 202207
 PERIOD_ADD(202201, 7): 202208
 PERIOD_ADD(202201, 8): 202209
 PERIOD_ADD(202201, 9): 202210
PERIOD_ADD(202201, 10): 202211
PERIOD_ADD(202201, 11): 202212
PERIOD_ADD(202201, 12): 202301

PERIOD_DIFF() 函数

MySQLPERIOD_DIFF()函数返回两个通过年月指定的时期之间相差的月数。PERIOD_DIFF()语法这是MySQLPERIOD_DIFF()函数的语法:PERIOD_DIFF(period1,period2)参数period1必需的。格式:YYYYMM或YYMM。period2必需的。格

MySQL PERIOD_DIFF() 函数返回两个通过年月指定的时期之间相差的月数。

PERIOD_DIFF() 语法

这是 MySQL PERIOD_DIFF() 函数的语法:

PERIOD_DIFF(period1, period2)

参数

  • period1

    必需的。格式: YYYYMMYYMM

  • period2

    必需的。格式: YYYYMMYYMM

返回值

MySQL PERIOD_DIFF() 函数返回两个通过年月指定的时期之间相差的月数。

PERIOD_DIFF() 示例

这里是几个 PERIOD_DIFF() 函数的示例。

SELECT
    PERIOD_DIFF(202202, 202201),
    PERIOD_DIFF(202203, 202201),
    PERIOD_DIFF(202204, 202201),
    PERIOD_DIFF(202205, 202201),
    PERIOD_DIFF(202206, 202201),
    PERIOD_DIFF(202207, 202201),
    PERIOD_DIFF(202208, 202201),
    PERIOD_DIFF(202209, 202201),
    PERIOD_DIFF(202210, 202201),
    PERIOD_DIFF(202211, 202201),
    PERIOD_DIFF(202212, 202201),
    PERIOD_DIFF(202301, 202201)\G
PERIOD_DIFF(202202, 202201): 1
PERIOD_DIFF(202203, 202201): 2
PERIOD_DIFF(202204, 202201): 3
PERIOD_DIFF(202205, 202201): 4
PERIOD_DIFF(202206, 202201): 5
PERIOD_DIFF(202207, 202201): 6
PERIOD_DIFF(202208, 202201): 7
PERIOD_DIFF(202209, 202201): 8
PERIOD_DIFF(202210, 202201): 9
PERIOD_DIFF(202211, 202201): 10
PERIOD_DIFF(202212, 202201): 11
PERIOD_DIFF(202301, 202201): 12

QUARTER() 函数

MySQLQUARTER()函数返回一个指定日期所在季度值。QUARTER()语法这是MySQLQUARTER()函数的语法:QUARTER(date)参数date必需的。一个日期或者日期时间表达式。返回值MySQLQUARTER()函数返回一个指定日期所在季度值。QUARTER()函数的返回值介于

MySQL QUARTER() 函数返回一个指定日期所在季度值。

QUARTER() 语法

这是 MySQL QUARTER() 函数的语法:

QUARTER(date)

参数

  • date

    必需的。一个日期或者日期时间表达式。

返回值

MySQL QUARTER() 函数返回一个指定日期所在季度值。QUARTER() 函数的返回值介于 14 之间,他们的含义如下:

  • 1 - 第一季度,即 1 月到 3 月。
  • 2 - 第二季度,即 4 月到 6 月。
  • 3 - 第三季度,即 7 月到 9 月。
  • 4 - 第四季度,即 10 月到 12 月。

如果参数为 NULLQUARTER() 函数将返回 NULL

QUARTER() 示例

这里是几个 QUARTER() 函数的示例。

SELECT
    QUARTER('2022-02-28'),
    QUARTER('2022-02-28 10:11:12');
+-----------------------+--------------------------------+
| QUARTER('2022-02-28') | QUARTER('2022-02-28 10:11:12') |
+-----------------------+--------------------------------+
|                     1 |                              1 |
+-----------------------+--------------------------------+

SEC_TO_TIME() 函数

MySQLSEC_TO_TIME()函数将指定的秒数转为一个格式为HH:MM:SS的时间值。SEC_TO_TIME()语法这是MySQLSEC_TO_TIME()函数的语法:SEC_TO_TIME(seconds)参数seconds必需的。秒数。返回值MySQLSEC_TO_TIME()函数返回一个

MySQL SEC_TO_TIME() 函数将指定的秒数转为一个格式为 HH:MM:SS 的时间值。

SEC_TO_TIME() 语法

这是 MySQL SEC_TO_TIME() 函数的语法:

SEC_TO_TIME(seconds)

参数

  • seconds

    必需的。秒数。

返回值

MySQL SEC_TO_TIME() 函数返回一个格式为 HH:MM:SS 的时间值。

如果参数为 NULLSEC_TO_TIME() 函数将返回 NULL

SEC_TO_TIME() 示例

这里是几个 SEC_TO_TIME() 函数的示例。

SELECT
    SEC_TO_TIME(100),
    SEC_TO_TIME(3600),
    SEC_TO_TIME(-72000);
+------------------+-------------------+---------------------+
| SEC_TO_TIME(100) | SEC_TO_TIME(3600) | SEC_TO_TIME(-72000) |
+------------------+-------------------+---------------------+
| 00:01:40         | 01:00:00          | -20:00:00           |
+------------------+-------------------+---------------------+

ECOND() 函数

MySQLSECOND()函数提取并返回时间的秒部分。SECOND()语法这是MySQLSECOND()函数的语法:SECOND(time)参数time必需的。一个时间或者日期时间表达式。返回值MySQLSECOND()函数提取并返回时间的秒部分,SECOND()函数的返回值介于0到59之间。如果参

MySQL SECOND() 函数提取并返回时间的秒部分。

SECOND() 语法

这是 MySQL SECOND() 函数的语法:

SECOND(time)

参数

  • time

    必需的。一个时间或者日期时间表达式。

返回值

MySQL SECOND() 函数提取并返回时间的秒部分,SECOND() 函数的返回值介于 059 之间。

如果参数为 NULLSECOND() 函数将返回 NULL

###SECOND() 示例

这里是几个 SECOND() 函数的示例。

SELECT
    SECOND('10:11:12'),
    SECOND('2022-02-28 10:11:12');
+--------------------+-------------------------------+
| SECOND('10:11:12') | SECOND('2022-02-28 10:11:12') |
+--------------------+-------------------------------+
|                 12 |                            12 |
+--------------------+-------------------------------+

STR_TO_DATE() 函数

MySQLSTR_TO_DATE()函数将指定的字符串根据指定日期格式转为日期/时间。STR_TO_DATE()函数与DATE_FORMAT()函数是相反的。STR_TO_DATE()语法这是MySQLSTR_TO_DATE()函数的语法:STR_TO_DATE(str,format)参数str必需

MySQL STR_TO_DATE() 函数将指定的字符串根据指定日期格式转为日期/时间。 STR_TO_DATE() 函数与 DATE_FORMAT() 函数是相反的。

STR_TO_DATE() 语法

这是 MySQL STR_TO_DATE() 函数的语法:

STR_TO_DATE(str, format)

参数

  • str

    必需的。需要格式化成日期的字符串。

  • format

    必需的。格式化字符串。

下表整理了 format 中可采用的格式化符号:

符号说明
%a星期的缩写 (SunSat)
%b月份的缩写 (JanDec)
%c月份数字 (012)
%D带有英语前缀的月份中的每天 (0th, 1st, 2nd, 3rd, …)
%d月份中的每天的两位数字表示 (0031)
%e月份中的每天的数字表示 (031)
%f微秒 (000000999999)
%H小时 (0023)
%h小时 (0112)
%I小时 (0112)
%i分钟 (0059)
%j一年中的每天 (001366)
%k小时 (023)
%l小时 (112)
%M月份名称 (JanuaryDecember)
%m两位数字月份 (0012)
%pAM 或者 PM
%r十二小时制时间 ( hh:mm:ss 后跟 AMPM)
%S秒 (0059)
%s秒 (0059)
%T二十四小时制时间 (hh:mm:ss)
%U一年中的星期 (0053), 每周的开始是星期天; WEEK() 函数中的 mode 0
%u一年中的星期 (0053), 每周的开始是星期一; WEEK() 函数中的 mode 1
%V一年中的星期 (0153), 每周的开始是星期天; WEEK() 函数中的 mode 2, 用于 %X
%v一年中的星期 (0153), 每周的开始是星期一; WEEK() 函数中的 mode 3, 用于 %x
%W星期的名称 (SundaySaturday)
%w星期中的每天 (0=星期天…6=星期六)
%X一年中的星期,每周的开始是星期天,四位数字,用于 %V
%x一年中的星期,每周的开始是星期一,四位数字,用于 %v
%Y四位数字年份
%y两位数字年份
%%转义 %
%xx, 上面为列举的其他字符

返回值

STR_TO_DATE() 函数返回一个日期/时间/日期时间。

  • 如果不能按照 format 解析 strSTR_TO_DATE() 函数将返回 NULL
  • 如果其中任何一个参数为 NULLSTR_TO_DATE() 函数将返回 NULL

STR_TO_DATE() 示例

这里是几个 STR_TO_DATE() 函数的示例。

示例 1: 转为日期

SELECT STR_TO_DATE('2022/02/01', '%Y/%m/%d');
+---------------------------------------+
| STR_TO_DATE('2022/02/01', '%Y/%m/%d') |
+---------------------------------------+
| 2022-02-01                            |
+---------------------------------------+

示例 2: 转为日期时间

SELECT STR_TO_DATE('2022/02/01 10:10:10', '%Y/%m/%d %H:%i:%S');
+---------------------------------------------------------+
| STR_TO_DATE('2022/02/01 10:10:10', '%Y/%m/%d %H:%i:%S') |
+---------------------------------------------------------+
| 2022-02-01 10:10:10                                     |
+---------------------------------------------------------+

SUBDATE() 函数

MySQLSUBDATE()函数在指定的日期/时间上减去指定到时间间隔加并返回新的日期/时间。SUBDATE()语法这是MySQLSUBDATE()函数的语法:SUBDATE(date,days)SUBDATE(date,INTERVALvalueunit)参数date必需的。需要操作的日期。day

MySQL SUBDATE() 函数在指定的日期/时间上减去指定到时间间隔加并返回新的日期/时间。

SUBDATE() 语法

这是 MySQL SUBDATE() 函数的语法:

SUBDATE(date, days)
SUBDATE(date, INTERVAL value unit)

参数

  • date

    必需的。需要操作的日期。

  • days

    必需的。在 date 上减去的天数。

  • value

    必需的。时间/日期间隔。正数和负数都是允许的。

  • unit

    必需的。时间/日期间隔的单位。

时间/日期间隔的单位可以是以下值中的一个:

  • MICROSECOND
  • SECOND
  • MINUTE
  • HOUR
  • DAY
  • WEEK
  • MONTH
  • QUARTER
  • YEAR
  • SECOND_MICROSECOND
  • MINUTE_MICROSECOND
  • MINUTE_SECOND
  • HOUR_MICROSECOND
  • HOUR_SECOND
  • HOUR_MINUTE
  • DAY_MICROSECOND
  • DAY_SECOND
  • DAY_MINUTE
  • DAY_HOUR
  • YEAR_MONTH

返回值

SUBDATE() 函数从指定的日期/时间减去指定的时间间隔,并返回一个新的日期/时间。SUBDATE() 函数的返回值和参数有关:

  • 如果 date 参数是 DATE 类型,并且时间间隔为 YEAR, MONTH 或者 DAY,返回 DATE
  • 如果 date 参数是 DATE 类型,并且时间间隔为 HOURS, MINUTES 或者 SECONDS,返回 DATETIME
  • 如果 date 参数是 DATETIME 类型,返回 DATETIME
  • 如果 date 参数是 TIME 类型,并且时间间隔为 YEAR, MONTH 或者 DAY,返回 DATETIME
  • 如果 date 参数是 TIME 类型,并且计算只涉及 HOURS, MINUTESSECONDS 部分,返回 TIME。(开始于 MySQL 8.0.28)
  • 其他情况下返回字符串。

SUBDATE() 示例

这里是几个 SUBDATE() 函数的示例。

示例 1

SELECT
    SUBDATE('2020-06-10', 10),
    SUBDATE('2020-06-10', -10)\G
 SUBDATE('2020-06-10', 10): 2020-05-31
SUBDATE('2020-06-10', -10): 2020-06-20

示例 2

SELECT
    SUBDATE('2020-06-10', INTERVAL 10 DAY),
    SUBDATE('2020-06-10', INTERVAL 10 HOUR)\G
 SUBDATE('2020-06-10', INTERVAL 10 DAY): 2020-05-31
SUBDATE('2020-06-10', INTERVAL 10 HOUR): 2020-06-09 14:00:00

示例 3

SELECT
    SUBDATE('2020-06-10 10:00:00', INTERVAL 10 HOUR),
    SUBDATE('2020-06-10 10:00:00', INTERVAL 10 MINUTE)\G
  SUBDATE('2020-06-10 10:00:00', INTERVAL 10 HOUR): 2020-06-10 00:00:00
SUBDATE('2020-06-10 10:00:00', INTERVAL 10 MINUTE): 2020-06-10 09:50:00

示例 4

SELECT
    SUBDATE(CURDATE(), INTERVAL 10 HOUR),
    SUBDATE(NOW(), INTERVAL 10 MINUTE)\G
SUBDATE(CURDATE(), INTERVAL 10 HOUR): 2022-04-10 14:00:00
  SUBDATE(NOW(), INTERVAL 10 MINUTE): 2022-04-11 08:56:43

这里,我们使用了 CURDATE() 函数返回当前的日期,使用 NOW() 函数返回当前日期时间。

SUBTIME() 函数

MySQLSUBTIME()函数在指定的时间上减去指定的时间间隔并返回结果。SUBTIME()语法这是MySQLSUBTIME()函数的语法:SUBTIME(timeExpr1,timeExpr2)参数timeExpr1必需的。它是一个datetime或者time表达式。timeExpr2必需的。它

MySQL SUBTIME() 函数在指定的时间上减去指定的时间间隔并返回结果。

SUBTIME() 语法

这是 MySQL SUBTIME() 函数的语法:

SUBTIME(timeExpr1, timeExpr2)

参数

  • timeExpr1

    必需的。它是一个 datetime 或者 time 表达式。

  • timeExpr2

    必需的。它是个时间表达式。它可以是正数或者负数。

返回值

SUBTIME() 函数从 timeExpr1 中减去 timeExpr2,并返回结果。

SUBTIME() 函数按如下规则确定返回值的类型:

  • 如果 timeExpr1 参数是动态类型,SUBTIME() 函数返回值类型为 TIME
  • 否则,SUBTIME() 函数返回的数据类型和第一个参数一样。

SUBTIME() 示例

这里是几个 SUBTIME() 函数的示例。

示例 1

给指定的时间减去 10 秒钟:

SELECT
    SUBTIME('2020-10-10 10:10:10', 10),
    SUBTIME('10:10:10', 10)\G
SUBTIME('2020-10-10 10:10:10', 10): 2020-10-10 10:10:00
           SUBTIME('10:10:10', 10): 10:10:00

示例 2

给指定的时间减去 1 分钟:

SELECT
    SUBTIME('10:10:10', 100),
    SUBTIME('10:10:10', '100'),
    SUBTIME('10:10:10', '0:01:00')\G
      SUBTIME('10:10:10', 100): 10:09:10
    SUBTIME('10:10:10', '100'): 10:09:10
SUBTIME('10:10:10', '0:01:00'): 10:09:10

示例 3

给指定的时间减去和加上 1 小时 10 分钟 10 秒 10 微秒。

SELECT
    SUBTIME('10:00:00', '01:10:10.000010'),
    SUBTIME('10:00:00', '-01:10:10.000010'),
    ADDTIME('10:00:00', '01:10:10.000010')\G
 SUBTIME('10:00:00', '01:10:10.000010'): 08:49:49.999990
SUBTIME('10:00:00', '-01:10:10.000010'): 11:10:10.000010
 ADDTIME('10:00:00', '01:10:10.000010'): 11:10:10.000010

这里,参数 '-01:10:10.000010' 前面的减号意味着从 '10:00:00' 上减去 '01:10:10.000010',这和 ADDTIME() 函数结果一样。

MySQLSYSDATE()函数按YYYY-MM-DDhh:mm:ss格式返回当前时间和日期。与NOW()函数不同,SYSDATE()函数返回的该函数执行的准确系统时间,而NOW()函数返回的是所在的语句、函数、存储过程开始执行的时间。SYSDATE()语法这是MySQLSYSDATE()函数的语法

MySQL SYSDATE() 函数按 YYYY-MM-DD hh:mm:ss 格式返回当前时间和日期。

NOW() 函数不同,SYSDATE() 函数返回的该函数执行的准确系统时间,而 NOW() 函数返回的是所在的语句、函数、存储过程开始执行的时间。

SYSDATE() 函数

SYSDATE() 语法

这是 MySQL SYSDATE() 函数的语法:

SYSDATE()

SYSDATE() 示例

返回系统的当前时间。

SELECT SYSDATE(), SYSDATE() + 1;
+---------------------+----------------+
| SYSDATE()           | SYSDATE() + 1  |
+---------------------+----------------+
| 2022-04-12 03:34:13 | 20220412033414 |
+---------------------+----------------+

注意: SYSDATE() + 0 的结果为 YYYYMMDDhhmmss 格式。SYSDATE() + N 意味着当前时间加上 N 秒。

NOW() 函数不同,SYSDATE() 函数返回的该函数执行的准确系统时间,而 NOW() 函数返回的是所在的语句、函数、存储过程开始执行的时间。请看下面的示例:

SELECT
    NOW(),
    SYSDATE(),
    SLEEP(2),
    NOW(),
    SYSDATE()\G
    NOW(): 2022-04-12 03:35:10
SYSDATE(): 2022-04-12 03:35:10
 SLEEP(2): 0
    NOW(): 2022-04-12 03:35:10
SYSDATE(): 2022-04-12 03:35:12

TIME() 函数

MySQLTIME()函数从时间或者日期时间中提取时间部分并返回。TIME()语法这是MySQLTIME()函数的语法:TIME(expr)参数expr必需的。一个日期或者日期时间表达式。返回值MySQLTIME()函数返回指定的时间或者日期时间中的时间部分。如果指定的表达式不是一个合法的时间或者日

MySQL TIME() 函数从时间或者日期时间中提取时间部分并返回。

TIME() 语法

这是 MySQL TIME() 函数的语法:

TIME(expr)

参数

  • expr

    必需的。一个日期或者日期时间表达式。

返回值

MySQL TIME() 函数返回指定的时间或者日期时间中的时间部分。

如果指定的表达式不是一个合法的时间或者日期时间,TIME() 函数将返回 NULL

如果参数为 NULLTIME() 函数将返回 NULL

TIME() 示例

这里是几个 TIME() 函数的示例。

SELECT
    TIME('10:10:10'),
    TIME('2022-02-28 10:10:10'),
    TIME('10:10:10.001112'),
    TIME('2022-02-28 10:10:10.001112'),
    TIME(NOW()),
    TIME('Not A Date'),
    TIME(NULL)\G
                  TIME('10:10:10'): 10:10:10
       TIME('2022-02-28 10:10:10'): 10:10:10
           TIME('10:10:10.001112'): 10:10:10.001112
TIME('2022-02-28 10:10:10.001112'): 10:10:10.001112
                       TIME(NOW()): 09:12:55
                TIME('Not A Date'): NULL
                        TIME(NULL): NULL

TIME_FORMAT() 函数

MySQLTIME_FORMAT()函数按照指定的格式格式化时间。TIME_FORMAT()语法这是MySQLTIME_FORMAT()函数的语法:TIME_FORMAT(time,format)参数time必需的。需要格式化的时间。format必需的。格式化模式字符串。下表整理了format中可采

MySQL TIME_FORMAT() 函数按照指定的格式格式化时间。

TIME_FORMAT() 语法

这是 MySQL TIME_FORMAT() 函数的语法:

TIME_FORMAT(time, format)

参数

  • time

    必需的。需要格式化的时间。

  • format

    必需的。格式化模式字符串。

下表整理了 format 中可采用的格式化符号:

占位符说明
%f微秒 (000000999999)
%H小时 (0023)
%h小时 (0112)
%I小时 (0112)
%i分钟 (0059)
%k小时 (023)
%l小时 (112)
%pAM 或者 PM
%r十二小时制时间 (hh:mm:ss 后跟 AMPM)
%S秒 (0059)
%s秒 (0059)
%T二十四小时制时间 (hh:mm:ss)
%%转义 %

返回值

TIME_FORMAT() 函数按照指定的格式格式化时间并返回格式化后的字符串。

如果其中任何一个参数为 NULLTIME_FORMAT() 函数将返回 NULL

TIME_FORMAT() 示例

这里是几个 TIME_FORMAT() 函数的示例。

SELECT
    TIME_FORMAT("19:30:10", "%H %i %s"),
    TIME_FORMAT("19:30:10", "%h %i %s %p"),
    TIME_FORMAT("19:30:10", "%r"),
    TIME_FORMAT("19:30:10", "%T"),
    TIME_FORMAT("19:30:10", "%H %i %s")\G
   TIME_FORMAT("19:30:10", "%H %i %s"): 19 30 10
TIME_FORMAT("19:30:10", "%h %i %s %p"): 07 30 10 PM
         TIME_FORMAT("19:30:10", "%r"): 07:30:10 PM
         TIME_FORMAT("19:30:10", "%T"): 19:30:10
   TIME_FORMAT("19:30:10", "%H %i %s"): 19 30 10

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员zhi路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值