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