类别:

日期和时间函数

EXTRACT

从日期、时间或时间戳中提取指定的日期或时间部分。

选择:

DATE_PARTHOUR / MINUTE / SECONDYEAR* / DAY* / WEEK* / MONTH / QUARTER

语法

EXTRACT( <date_or_time_part> FROM <date_or_time_expr> )
Copy
EXTRACT( <date_or_time_part> , <date_or_timestamp_expr> )
Copy

实参

date_or_time_part

时间单位。必须是 支持的日期和时间部分 中列出的一个值(例如 month)。该值可以是字符串字面量,也可以不带引号(例如 'month'month)。

  • date_or_time_partweek`(或其任何变体)时,输出由 :ref:`label-week_start 会话参数控制。

  • date_or_time_partdayofweekyearofweek`(或其任何变体)时,输出由 :ref:`label-week_of_year_policyWEEK_START 会话参数控制。

有关更多详细信息(包括示例),请参阅 日历周和工作日

date_or_timestamp_expr

日期、时间、时间戳或计算结果为日期、时间或时间戳的表达式。

返回

返回 NUMBER 数据类型的值。

示例

指定 year 部分,以从时间戳中提取年份:

SELECT EXTRACT(year FROM TO_TIMESTAMP('2024-04-10T23:39:20.123-07:00')) AS YEAR;
Copy
+------+
| YEAR |
|------|
| 2024 |
+------+

将 EXTRACT 与 DECODE 函数和 dayofweek 部分一起使用,以返回当前星期几的全称:

SELECT DECODE(EXTRACT(dayofweek FROM SYSTIMESTAMP()),
  1, 'Monday',
  2, 'Tuesday',
  3, 'Wednesday',
  4, 'Thursday',
  5, 'Friday',
  6, 'Saturday',
  7, 'Sunday') AS DAYOFWEEK;
Copy
+-----------+
| DAYOFWEEK |
|-----------|
| Thursday  |
+-----------+

备注

输出结果取决于运行查询时 SYSTIMESTAMP 函数返回的值。此外,还可以使用 DAYNAME 函数从指定日期或时间戳中提取三个字母的星期几名称。

语言: 中文