Oracle EXTRACT(datetime) 函数使用指南
Oracle EXTRACT(datetime)
是一个内置函数,它从日期时间或间隔表达式中提取并返回指定的日期字段的值。
Oracle EXTRACT(datetime)
语法
这里是 Oracle EXTRACT(datetime)
函数的语法:
EXTRACT(field FROM expr)
参数
field
-
必需的。需要提取的日期时间字段。
field
可以是以下值中的一个:YEAR
MONTH
DAY
HOUR
MINUTE
SECOND
TIMEZONE_HOUR
TIMEZONE_MINUTE
TIMEZONE_REGION
TIMEZONE_ABBR
expr
-
必需的。一个日期时间或间隔表达式。
expr
可以是计算为与请求字段兼容的日期时间或间隔数据类型的任何表达式:
-
如果
YEAR
,MONTH
被请求,则expr
必须求值为数据类型为DATE
,TIMESTAMP
,TIMESTAMP WITH TIME ZONE
,TIMESTAMP WITH LOCAL TIME ZONE
, 或者INTERVAL YEAR TO MONTH
的表达式。 -
如果
DAY
被请求,则expr
必须求值为数据类型为DATE
,TIMESTAMP
,TIMESTAMP WITH TIME ZONE
,TIMESTAMP WITH LOCAL TIME ZONE
, 或INTERVAL DAY TO SECOND
的表达式。 -
如果
HOUR
、MINUTE
或SECOND
被请求,则expr
必须求值为数据类型为TIMESTAMP
、,TIMESTAMP WITH TIME ZONE
,TIMESTAMP WITH LOCAL TIME ZONE
、或INTERVAL DAY TO SECOND
的表达式。DATE
在这里无效,因为 Oracle 数据库将其视为没有时间字段的 ANSIDATE
数据类型。 -
如果
TIMEZONE_HOUR
,TIMEZONE_MINUTE
,TIMEZONE_ABBR
,TIMEZONE_REGION
, 或者TIMEZONE_OFFSET
被请求,则expr
必须求值为数据类型为TIMESTAMP WITH TIME ZONE
或者TIMESTAMP WITH LOCAL TIME ZONE
的表达式。
返回值
Oracle EXTRACT(datetime)
函数从日期时间或间隔表达式中提取并返回指定的日期字段的值。
EXTRACT
解释 expr
为 ANSI 日期时间数据类型。例如,EXTRACT
不将 DATE
视为遗留 Oracle DATE
,而是视为 不带时间元素 的 ANSI DATE
。因此,您只能从 DATE
值中提取 YEAR
、 MONTH
和 DAY
。同样,您仅可以从 TIMESTAMP WITH TIME ZONE
数据类型中提取 TIMEZONE_HOUR
和 TIMEZONE_MINUTE
。
Oracle EXTRACT(datetime)
示例
这里有几个展示了 Oracle EXTRACT(datetime)
函数用法的示例。
基本用法
要从 2023-02-11 15:16:17
中分别提取年、月、日、时、分、秒,请使用如下语句:
SELECT
EXTRACT(YEAR FROM TIMESTAMP '2023-02-11 15:16:17') YEAR,
EXTRACT(MONTH FROM TIMESTAMP '2023-02-11 15:16:17') MONTH,
EXTRACT(DAY FROM TIMESTAMP '2023-02-11 15:16:17') DAY,
EXTRACT(HOUR FROM TIMESTAMP '2023-02-11 15:16:17') HOUR,
EXTRACT(MINUTE FROM TIMESTAMP '2023-02-11 15:16:17') MINUTE,
EXTRACT(SECOND FROM TIMESTAMP '2023-02-11 15:16:17') SECOND
FROM dual;
输出:
YEAR MONTH DAY HOUR MINUTE SECOND
_______ ________ ______ _______ _________ _________
2023 2 11 15 16 17
小数秒
Oracle EXTRACT(datetime)
函数允许您提取带有小数秒的秒值,如下:
SELECT
EXTRACT(SECOND FROM TIMESTAMP '2023-02-11 15:16:17.238000000') SECOND
FROM dual;
输出:
SECOND
_________
17.238
间隔
Oracle EXTRACT(datetime)
函数允许您从间隔值中提取字段:
SELECT
EXTRACT(YEAR FROM INTERVAL '10-2' YEAR TO MONTH) YEAR,
EXTRACT(MONTH FROM INTERVAL '10-2' YEAR TO MONTH) MONTH
FROM dual;
输出:
YEAR MONTH
_______ ________
10 2
再来一个示例:
SELECT
EXTRACT(HOUR FROM INTERVAL '11:20' HOUR TO MINUTE) HOUR,
EXTRACT(MINUTE FROM INTERVAL '11:20' HOUR TO MINUTE) MINUTE
FROM dual;
输出:
HOUR MINUTE
_______ _________
11 20
结论
Oracle EXTRACT(datetime)
是一个内置函数,它从日期时间或间隔表达式中提取并返回指定的日期字段的值。