EXTRACT
📄字数 685
👁️阅读量 加载中...
功能描述
从 expr
中提取指定时间内容。
语法格式
sql
EXTRACT(unit FROM expr)
输入参数
unit
:要提取的指定时间类型关键字,可选值包括YEAR
、MONTH
、DAY
、HOUR
、MINUTE
、SECEND
;expr
:时间日期类型表达式。
提示
- 因
NULL
无具体的类型,所以当参数expr
为NULL
时,会产生异常E10100 候选函数出现多义性
,需要手动为参数指定具体的类型,如:EXTRACT(YEAR FROM NULL::DATE)
。
输出结果
- 提取出的指定时间内容,输入参数
unit
的值为SECEND
时返回值类型为DOUBLE
,其余值(YEAR
、MONTH
、DAY
、HOUR
、MINUTE
)的返回值类型均为INTEGER
; - 输入参数
expr
为NULL
时,输出结果为NULL
; - 返回值范围:
unit
为YEAR
时返回值范围为[1,9999]
;unit
为MONTH
时返回值范围为[1,12]
;unit
为DAY
时返回值范围为[1,31]
;unit
为HOUR
时返回值范围为[0,24]
;unit
为MINUTE
时返回值范围为[0,59]
;unit
为SECOND
时返回值范围为[0,59.999999]
。
提示
- 因
TIME
类型精确到毫秒,所以当输入参数unit
的值为SECEND
,expr
为TIME
或TIME WITH TIME ZONE
类型时,返回值只精确到毫秒。
示例
sql
-- 提取时间常量的HOUR内容
SQL> SELECT EXTRACT(HOUR FROM '2025-05-05 15:08:50') FROM DUAL;
+-------+
| EXPR1 |
+-------+
| 15 |
+-------+
-- 提取时间常量的MONTH内容
SQL> SELECT EXTRACT(MONTH FROM '2025-06-19') FROM DUAL;
+-------+
| EXPR1 |
+-------+
| 6 |
+-------+