日期时间函数
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
,MINUTES
和SECONDS
部分,返回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
必需的。新的时区的标识。
fromTimeZone
和 toTimeZone
支持的格式包括:
- 使用
SYSTEM
意味着和当前系统的时区一样。 - 使用
+/-[H]H:MM
意味着和 UTC 时间的偏移量,比如'+10:00'
,'-6:00'
,'+05:30'
等。 - 使用时区的名称,比如:
'Europe/Helsinki'
,'US/Eastern'
,'MET'
,'GMT'
。
返回值
CONVERT_TZ()
函数返回新时区的日期时间。
如果参数错误或者为 NULL
,CONVERT_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-DD
或 YYYYMMDD
格式返回系统的当前日期。
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
。
如果参数为 NULL
,DATE()
函数将返回 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
,MINUTES
和SECONDS
部分,返回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 | 星期的缩写 (Sun …Sat ) |
%b | 月份的缩写 (Jan …Dec ) |
%c | 月份数字 (0 …12 ) |
%D | 带有英语前缀的月份中的每天 (0th , 1st , 2nd , 3rd , …) |
%d | 月份中的每天的两位数字表示 (00 …31 ) |
%e | 月份中的每天的数字表示 (0 …31 ) |
%f | 微秒 (000000 …999999 ) |
%H | 小时 (00 …23 ) |
%h | 小时 (01 …12 ) |
%I | 小时 (01 …12 ) |
%i | 分钟 (00 …59 ) |
%j | 一年中的每天 (001 …366 ) |
%k | 小时 (0 …23 ) |
%l | 小时 (1 …12 ) |
%M | 月份名称 (January …December ) |
%m | 两位数字月份 (00 …12 ) |
%p | AM 或者 PM |
%r | 十二小时制时间 (hh:mm:ss 后跟 AM 或 PM ) |
%S | 秒 (00 …59 ) |
%s | 秒 (00 …59 ) |
%T | 二十四小时制时间 (hh:mm:ss) |
%U | 一年中的星期 (00 …53 ), 每周的开始是星期天; WEEK() 函数中的 mode 0 |
%u | 一年中的星期 (00 …53 ), 每周的开始是星期一; WEEK() 函数中的 mode 1 |
%V | 一年中的星期 (01 …53 ), 每周的开始是星期天; WEEK() 函数中的 mode 2, 用于 %X |
%v | 一年中的星期 (01 …53 ), 每周的开始是星期一; WEEK() 函数中的 mode 3, 用于 %x |
%W | 星期的名称 (Sunday …Saturday ) |
%w | 星期中的每天 (0 =星期天…6 =星期六) |
%X | 一年中的星期,每周的开始是星期天,四位数字,用于 %V |
%x | 一年中的星期,每周的开始是星期一,四位数字,用于 %v |
%Y | 四位数字年份 |
%y | 两位数字年份 |
%% | 转义 % |
%x | x, 上面为列举的其他字符 |
返回值
DATE_FORMAT()
函数按照指定的格式格式化日期时间并返回格式化后的字符串。
如果其中任何一个参数为 NULL
,DATE_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
,MINUTES
和SECONDS
部分,返回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()
函数只比较 date1
和 date2
的日期部分。如果 date1
的日期晚于 date2
的日期,它返回一个整数,否则返回一个负数或者 0。
如果指定的表达式不是一个合法的日期或者日期时间,DATEDIFF()
函数将返回 NULL
。
如果参数为 NULL
,DATEDIFF()
函数将返回 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
。 - 如果参数为
NULL
,DAY()
函数将返回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
。 - 如果参数为
NULL
,DAYNAME()
函数将返回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
。 - 如果参数为
NULL
,DAYOFMONTH()
函数将返回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()
函数返回给定日期的工作日的索引。它返回一个从 1
到 7
之间的数字,代表的含义如下:
1
- 星期天2
- 星期一3
- 星期二4
- 星期三5
- 星期四6
- 星期五7
- 星期六
如果指定的表达式不是一个合法的日期或者日期时间,DAYOFWEEK()
函数将返回 NULL
。
如果参数为 NULL
,DAYOFWEEK()
函数将返回 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()
函数返回一个从 1
到 366
代表给定日期是一年中的第几天的数字。
DAYOFYEAR()
语法
这是 MySQL DAYOFYEAR()
函数的语法:
DAYOFYEAR(expr)
参数
-
expr
必需的。一个日期或者日期时间表达式。
返回值
MySQL DAYOFYEAR()
函数返回一个从 1
到 366
代表给定日期是一年中的第几天的数字。
- 如果指定的表达式不是一个合法的日期或者日期时间,
DAYOFYEAR()
函数将返回NULL
。 - 如果参数为
NULL
,DAYOFYEAR()
函数将返回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
。
如果参数为 NULL
,EXTRACT()
函数将返回 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
。 - 如果参数为
NULL
,HOUR()
函数将返回NULL
。 - 因为 MySQL 支持的最大时间为
838:59:59
,HOUR()
函数的最大数是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')
返回了 123
, HOUR('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()
函数返回指定的日期或者日期时间所在当月的最后一天。
如果参数为不合法的日期或者为 NULL
,LAST_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
等于或小于 0
,MAKEDATE()
函数将返回 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()
函数的返回值介于 0
到 59
之间。
如果参数为 NULL
,MINUTE()
函数将返回 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()
函数的返回值介于 1
到 12
之间。
如果参数为 NULL
,MONTH()
函数将返回 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
。 - 如果参数为
NULL
,MONTHNAME()
函数将返回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
必需的。使用
YYYYMM
或YYMM
格式表示的时期。 -
month_number
必需的。需要加到
period
上的月数。
返回值
MySQL PERIOD_ADD()
函数在指定年月上加上指定的月数将结果作为年月返回。 PERIOD_ADD()
函数返回值是一个数字,格式是 YYYYMM
。
如果参数为 NULL
,PERIOD_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
必需的。格式:
YYYYMM
或YYMM
。 -
period2
必需的。格式:
YYYYMM
或YYMM
。
返回值
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()
函数的返回值介于 1
到 4
之间,他们的含义如下:
1
- 第一季度,即 1 月到 3 月。2
- 第二季度,即 4 月到 6 月。3
- 第三季度,即 7 月到 9 月。4
- 第四季度,即 10 月到 12 月。
如果参数为 NULL
,QUARTER()
函数将返回 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
的时间值。
如果参数为 NULL
,SEC_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()
函数的返回值介于 0
到 59
之间。
如果参数为 NULL
,SECOND()
函数将返回 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 | 星期的缩写 (Sun …Sat ) |
%b | 月份的缩写 (Jan …Dec ) |
%c | 月份数字 (0 …12 ) |
%D | 带有英语前缀的月份中的每天 (0th , 1st , 2nd , 3rd , …) |
%d | 月份中的每天的两位数字表示 (00 …31 ) |
%e | 月份中的每天的数字表示 (0 …31 ) |
%f | 微秒 (000000 …999999 ) |
%H | 小时 (00 …23 ) |
%h | 小时 (01 …12 ) |
%I | 小时 (01 …12 ) |
%i | 分钟 (00 …59 ) |
%j | 一年中的每天 (001 …366 ) |
%k | 小时 (0 …23 ) |
%l | 小时 (1 …12 ) |
%M | 月份名称 (January …December ) |
%m | 两位数字月份 (00 …12 ) |
%p | AM 或者 PM |
%r | 十二小时制时间 ( hh:mm:ss 后跟 AM 或 PM ) |
%S | 秒 (00 …59 ) |
%s | 秒 (00 …59 ) |
%T | 二十四小时制时间 (hh:mm:ss) |
%U | 一年中的星期 (00 …53 ), 每周的开始是星期天; WEEK() 函数中的 mode 0 |
%u | 一年中的星期 (00 …53 ), 每周的开始是星期一; WEEK() 函数中的 mode 1 |
%V | 一年中的星期 (01 …53 ), 每周的开始是星期天; WEEK() 函数中的 mode 2, 用于 %X |
%v | 一年中的星期 (01 …53 ), 每周的开始是星期一; WEEK() 函数中的 mode 3, 用于 %x |
%W | 星期的名称 (Sunday …Saturday ) |
%w | 星期中的每天 (0 =星期天…6 =星期六) |
%X | 一年中的星期,每周的开始是星期天,四位数字,用于 %V |
%x | 一年中的星期,每周的开始是星期一,四位数字,用于 %v |
%Y | 四位数字年份 |
%y | 两位数字年份 |
%% | 转义 % |
%x | x, 上面为列举的其他字符 |
返回值
STR_TO_DATE()
函数返回一个日期/时间/日期时间。
- 如果不能按照
format
解析str
,STR_TO_DATE()
函数将返回NULL
。 - 如果其中任何一个参数为
NULL
,STR_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
,MINUTES
和SECONDS
部分,返回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
。
如果参数为 NULL
,TIME()
函数将返回 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 | 微秒 (000000 …999999 ) |
%H | 小时 (00 …23 ) |
%h | 小时 (01 …12 ) |
%I | 小时 (01 …12 ) |
%i | 分钟 (00 …59 ) |
%k | 小时 (0 …23 ) |
%l | 小时 (1 …12 ) |
%p | AM 或者 PM |
%r | 十二小时制时间 (hh:mm:ss 后跟 AM 或 PM ) |
%S | 秒 (00 …59 ) |
%s | 秒 (00 …59 ) |
%T | 二十四小时制时间 (hh:mm:ss) |
%% | 转义 % |
返回值
TIME_FORMAT()
函数按照指定的格式格式化时间并返回格式化后的字符串。
如果其中任何一个参数为 NULL
,TIME_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