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 的表达式。

  • 如果 HOURMINUTESECOND 被请求,则 expr 必须求值为数据类型为 TIMESTAMP、, TIMESTAMP WITH TIME ZONE, TIMESTAMP WITH LOCAL TIME ZONE、或 INTERVAL DAY TO SECOND 的表达式。DATE 在这里无效,因为 Oracle 数据库将其视为没有时间字段的 ANSI DATE 数据类型。

  • 如果 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 值中提取 YEARMONTHDAY 。同样,您仅可以从 TIMESTAMP WITH TIME ZONE 数据类型中提取 TIMEZONE_HOURTIMEZONE_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) 是一个内置函数,它从日期时间或间隔表达式中提取并返回指定的日期字段的值。