目录
1、QUARTER() 返回一个指定日期所在季度值。
2、SEC_TO_TIME() 将指定的秒数转为一个格式为 HH:MM:SS 的时间值。
3、SECOND() 提取并返回时间的秒部分。
4、STR_TO_DATE() 将指定的字符串根据指定日期格式转为日期/时间。
5、SUBDATE() 在指定的日期/时间上减去指定的时间间隔并返回新的日期/时间。
6、SUBTIME() 在指定的时间上减去指定的时间间隔并返回结果。
7、SYSDATE() 按 YYYY-MM-DD hh:mm:ss 格式返回当前时间和日期。
8、TIME() 从时间或者日期时间中提取时间部分并返回。
QUARTER | SEC_TO_TIME | SECOND | STR_TO_DATE |
SUBDATE | SUBTIME | SYSDATE | TIME |
1、QUARTER() 返回一个指定日期所在季度值。
QUARTER()函数的返回值介于1到4之间,他们的含义如下:
1- 第一季度,即 1 月到 3 月。2- 第二季度,即 4 月到 6 月。3- 第三季度,即 7 月到 9 月。4- 第四季度,即 10 月到 12 月。如果参数为
NULL,QUARTER()函数将返回NULL。
SELECT
QUARTER('2024-02-28'),
QUARTER('2024-09-28 10:11:12');

2、SEC_TO_TIME() 将指定的秒数转为一个格式为 HH:MM:SS 的时间值。
SELECT
SEC_TO_TIME(100),
SEC_TO_TIME(3600),
SEC_TO_TIME(-72000);

3、SECOND() 提取并返回时间的秒部分。
SECOND()函数的返回值介于0到59之间。如果参数为
NULL,SECOND()函数将返回NULL。
SELECT
SECOND('10:11:12'),
SECOND('2024-02-28 10:11:20');

4、STR_TO_DATE() 将指定的字符串根据指定日期格式转为日期/时间。
STR_TO_DATE(str, format)
str:需要格式化成日期的字符串。
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, 上面为列举的其他字符 |
- 如果不能按照
format解析str,STR_TO_DATE()函数将返回NULL。- 如果其中任何一个参数为
NULL,STR_TO_DATE()函数将返回NULL。
SELECT STR_TO_DATE('2024/02/01 10:10:10', '%Y/%m/%d %H:%i:%S');

5、SUBDATE() 在指定的日期/时间上减去指定的时间间隔并返回新的日期/时间。
SUBDATE(date, days)
SUBDATE(date, INTERVAL value unit)
date:需要操作的日期。
days:在date上减去的天数。
value:时间/日期间隔。正数和负数都是允许的。
unit:时间/日期间隔的单位。
时间/日期间隔的单位
|
| 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 |
SELECT
SUBDATE('2024-06-10', 10),
SUBDATE('2024-06-10', -10)

SELECT
SUBDATE('2024-06-10', INTERVAL 10 DAY),
SUBDATE('2024-06-10', INTERVAL 10 HOUR)

SELECT
SUBDATE('2024-06-10 10:00:00', INTERVAL 10 HOUR),
SUBDATE('2024-06-10 10:00:00', INTERVAL 10 MINUTE)

SELECT
SUBDATE(CURDATE(), INTERVAL 10 HOUR),
SUBDATE(NOW(), INTERVAL 10 MINUTE)

6、SUBTIME() 在指定的时间上减去指定的时间间隔并返回结果。
SUBTIME(timeExpr1, timeExpr2)
timeExpr1:它是一个 datetime 或者 time 表达式。
timeExpr2:它是个时间表达式。它可以是正数或者负数。
- 如果
timeExpr1参数是动态类型,SUBTIME()函数返回值类型为TIME。- 否则,
SUBTIME()函数返回的数据类型和第一个参数一样。
SELECT
SUBTIME('2024-10-10 10:10:10', 10),
SUBTIME('10:10:10', 10)

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

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')

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

8、TIME() 从时间或者日期时间中提取时间部分并返回。
如果指定的表达式不是一个合法的时间或者日期时间,
TIME()函数将返回NULL。如果参数为
NULL,TIME()函数将返回NULL。
SELECT
TIME('10:10:10'),
TIME('2024-02-28 10:10:10'),
TIME('10:10:10.001112'),
TIME('2024-02-28 10:10:10.001112'),
TIME(NOW()),
TIME('Not A Date'),
TIME(NULL)




















