

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息，请参阅[博客文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

# DATE\$1PART 函数
<a name="r_DATE_PART_function"></a>

DATE\$1PART 从表达式中提取日期部分值。DATE\$1PART 是 PGDATE\$1PART 函数的同义词。

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

```
DATE_PART(datepart, {date|timestamp})
```

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

 *datepart*   
函数所操作的日期值的特定部分（例如年、月或日）的标识符文本或字符串。有关更多信息，请参阅 [日期或时间戳函数的日期部分](r_Dateparts_for_datetime_functions.md)。

\$1*date*\$1*timestamp*\$1  
日期列、时间戳列或隐式转换为日期或时间戳的表达式。*date* 或 *timestamp* 的列或表达式必须包含 *datepart* 中指定的日期部分。

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

DOUBLE

## 示例
<a name="r_DATE_PART_function-examples"></a>

DATE\$1PART 函数的默认列名是 `pgdate_part`。

 有关以下示例中使用的数据的更多信息，请参阅[示例数据库](c_sampledb.md)。

以下示例从时间戳文本中查找分钟。

```
SELECT DATE_PART(minute, timestamp '20230104 04:05:06.789');
            
pgdate_part
-----------
         5
```

以下示例从时间戳文本中查找周编号。周编号计算遵循 ISO 8601 标准。有关更多信息，请参阅 Wikipedia 中的 [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)。

```
SELECT DATE_PART(week, timestamp '20220502 04:05:06.789');
            
pgdate_part
-----------
         18
```

以下示例从时间戳文本中查找月份中的某个日期。

```
SELECT DATE_PART(day, timestamp '20220502 04:05:06.789');
            
pgdate_part
-----------
         2
```

下面的示例从时间戳文本中查找星期几信息。星期几的计算是 0-6 之间的整数，从星期日开始。

```
SELECT DATE_PART(dayofweek, timestamp '20220502 04:05:06.789');
            
pgdate_part
-----------
         1
```

以下示例从时间戳文本中查找世纪。世纪计算遵循 ISO 8601 标准。有关更多信息，请参阅 Wikipedia 中的 [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)。

```
SELECT DATE_PART(century, timestamp '20220502 04:05:06.789');
            
pgdate_part
-----------
         21
```

以下示例从时间戳文本中查找千禧年。千禧年计算遵循 ISO 8601 标准。有关更多信息，请参阅 Wikipedia 中的 [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)。

```
SELECT DATE_PART(millennium, timestamp '20220502 04:05:06.789');
            
pgdate_part
-----------
         3
```

以下示例从时间戳文本中查找微秒。微秒计算遵循 ISO 8601 标准。有关更多信息，请参阅 Wikipedia 中的 [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)。

```
SELECT DATE_PART(microsecond, timestamp '20220502 04:05:06.789');
            
pgdate_part
-----------
    789000
```

以下示例从日期文本中查找月份。

```
SELECT DATE_PART(month, date '20220502');
            
pgdate_part
-----------
         5
```

以下示例将 DATE\$1PART 函数应用于表中的列。

```
SELECT date_part(w, listtime) AS weeks, listtime
FROM listing 
WHERE listid=10
            

weeks |      listtime
------+---------------------
 25   | 2008-06-17 09:44:54
(1 row)
```

您可以用全名或缩写来命名日期部分；在这种情况下，*w* 代表星期数。

星期日期部分返回一个从 0-6 整数，从星期日开始。将 DATE\$1PART 与 dow (DAYOFWEEK) 结合使用以查看星期六的活动。

```
SELECT date_part(dow, starttime) AS dow, starttime 
FROM event
WHERE date_part(dow, starttime)=6
ORDER BY 2,1;     

 dow |      starttime
-----+---------------------
   6 | 2008-01-05 14:00:00
   6 | 2008-01-05 14:00:00
   6 | 2008-01-05 14:00:00
   6 | 2008-01-05 14:00:00
...
(1147 rows)
```