

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# EXTRACT 函数
<a name="EXTRACT_function"></a>

EXTRACT 函数返回 TIMESTAMP、TIMESTAMPTZ、TIME 或 TIMETZ 值中的日期或时间部分。示例包括时间戳中的日、月、年、小时、分钟、秒、毫秒或微秒。

## 语法
<a name="EXTRACT_function-synopsis"></a>

```
EXTRACT(datepart FROM source)
```

## 参数
<a name="EXTRACT_function-arguments"></a>

 *datepart*   
要提取的日期或时间的子字段，例如日、月、年、小时、分钟、毫秒或微秒。有关可能的值，请参阅[日期或时间戳函数的日期部分](Dateparts_for_datetime_functions.md)。

 *source*   
计算结果为 TIMESTAMP、TIMESTAMPTZ、TIME 或 TIMETZ 数据类型的列或表达式。

## 返回类型
<a name="EXTRACT_function-return-type"></a>

如果 *source* 值的计算结果为数据类型 TIMESTAMP、TIME 或 TIMETZ，则为 INTEGER。

如果 *source* 值的计算结果为数据类型 TIMESTAMPTZ，则为 DOUBLE PRECISION。

## TIME 示例
<a name="EXTRACT_function-examples-time"></a>

下面的示例表 TIME\$1TEST 具有一个列 TIME\$1VAL（类型 TIME），其中插入了三个值。

```
select time_val from time_test;
            
time_val
---------------------
20:00:00
00:00:00.5550
00:58:00
```

以下示例从每个 time\$1val 中提取分钟数。

```
select extract(minute from time_val) as minutes from time_test;
            
minutes
-----------
         0
         0
         58
```

以下示例从每个 time\$1val 中提取小时数。

```
select extract(hour from time_val) as hours from time_test;
            
hours
-----------
         20
         0
         0
```