目录
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)




















