Oracle EXTRACT(datetime) 函数使用指南
Oracle EXTRACT(datetime) 是一个内置函数,它从日期时间或间隔表达式中提取并返回指定的日期字段的值。
Oracle EXTRACT(datetime) 语法
这里是 Oracle EXTRACT(datetime) 函数的语法:
EXTRACT(field FROM expr)
参数
field-
必需的。需要提取的日期时间字段。
field可以是以下值中的一个:YEARMONTHDAYHOURMINUTESECONDTIMEZONE_HOURTIMEZONE_MINUTETIMEZONE_REGIONTIMEZONE_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) 是一个内置函数,它从日期时间或间隔表达式中提取并返回指定的日期字段的值。