

 Amazon Redshift 將不再支援從修補程式 198 開始建立新的 Python UDFs。現有 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/)。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 日期和時間函數
<a name="Date_functions_header"></a>

在此節中，您可以找到 Amazon Redshift 支援的日期和時間 scalar 函數之相關資訊。

**Topics**
+ [日期和時間函數的摘要](#date-functions-summary)
+ [交易中日期與時間函數](#date-functions-transactions)
+ [已取代的僅限領導節點函數](#date-functions-deprecated)
+ [\+ (串連) 運算子](r_DATE-CONCATENATE_function.md)
+ [ADD\_MONTHS 函數](r_ADD_MONTHS.md)
+ [AT TIME ZONE 函數](r_AT_TIME_ZONE.md)
+ [CONVERT\_TIMEZONE 函數](CONVERT_TIMEZONE.md)
+ [CURRENT\_DATE 函數](r_CURRENT_DATE_function.md)
+ [DATE\_CMP 函數](r_DATE_CMP.md)
+ [DATE\_CMP\_TIMESTAMP 函數](r_DATE_CMP_TIMESTAMP.md)
+ [DATE\_CMP\_TIMESTAMPTZ 函數](r_DATE_CMP_TIMESTAMPTZ.md)
+ [DATEADD 函數](r_DATEADD_function.md)
+ [DATEDIFF 函數](r_DATEDIFF_function.md)
+ [DATE\_PART 函數](r_DATE_PART_function.md)
+ [DATE\_PART\_YEAR 函數](r_DATE_PART_YEAR.md)
+ [DATE\_TRUNC 函數](r_DATE_TRUNC.md)
+ [EXTRACT 函數](r_EXTRACT_function.md)
+ [GETDATE 函數](r_GETDATE.md)
+ [INTERVAL\_CMP 函數](r_INTERVAL_CMP.md)
+ [LAST\_DAY 函數](r_LAST_DAY.md)
+ [MONTHS\_BETWEEN 函數](r_MONTHS_BETWEEN_function.md)
+ [NEXT\_DAY 函數](r_NEXT_DAY.md)
+ [SYSDATE 函數](r_SYSDATE.md)
+ [TIMEOFDAY 函數](r_TIMEOFDAY_function.md)
+ [TIMESTAMP\_CMP 函數](r_TIMESTAMP_CMP.md)
+ [TIMESTAMP\_CMP\_DATE 函數](r_TIMESTAMP_CMP_DATE.md)
+ [TIMESTAMP\_CMP\_TIMESTAMPTZ 函數](r_TIMESTAMP_CMP_TIMESTAMPTZ.md)
+ [TIMESTAMPTZ\_CMP 函數](r_TIMESTAMPTZ_CMP.md)
+ [TIMESTAMPTZ\_CMP\_DATE 函數](r_TIMESTAMPTZ_CMP_DATE.md)
+ [TIMESTAMPTZ\_CMP\_TIMESTAMP 函數](r_TIMESTAMPTZ_CMP_TIMESTAMP.md)
+ [TIMEZONE 函數](r_TIMEZONE.md)
+ [TO\_TIMESTAMP 函數](r_TO_TIMESTAMP.md)
+ [TRUNC 函數](r_TRUNC_date.md)
+ [日期或時間戳記函數的日期部分](r_Dateparts_for_datetime_functions.md)

## 日期和時間函數的摘要
<a name="date-functions-summary"></a>


| 函式 | 語法 | 傳回值 | 
| --- | --- | --- | 
| [\+ (串連) 運算子](r_DATE-CONCATENATE_function.md)將日期與 \+ 符號兩側的時間串連起來，並傳回 TIMESTAMP 或 TIMESTAMPTZ。 | date \+ time | TIMESTAMP 或 TIMESTAMPZ | 
| [ADD\_MONTHS](r_ADD_MONTHS.md)將指定幾個月新增至日期或時間戳記。 |  ADD\_MONTHS ({date\|timestamp}, integer) | TIMESTAMP | 
| [AT TIME ZONE](r_AT_TIME_ZONE.md)指定要透過 TIMESTAMP 或 TIMESTAMPTZ 表達式來使用哪一個時區。 |  AT TIME ZONE 'timezone' | TIMESTAMP 或 TIMESTAMPZ | 
| [CONVERT\_TIMEZONE](CONVERT_TIMEZONE.md)可將時間戳記從一個時區轉換為另一個時區。 | CONVERT\_TIMEZONE (['timezone',] 'timezone', timestamp) | TIMESTAMP | 
| [CURRENT\_DATE](r_CURRENT_DATE_function.md)傳回目前工作階段時區中的日期 (預設為 UTC) 做為目前交易的開始。 | CURRENT\_DATE | DATE | 
| [DATE\_CMP](r_DATE_CMP.md)比較兩個日期，如果日期相同則傳回 `0`、如果 *date1* 較晚則傳回 `1`，而如果 *date2* 較晚則傳回 `-1`。 | DATE\_CMP (date1, date2) | INTEGER | 
| [DATE\_CMP\_TIMESTAMP](r_DATE_CMP_TIMESTAMP.md)比較日期與時間，如果值相同則傳回 `0`、如果 *date* 較晚則傳回 `1`，而如果 *timestamp* 較晚則傳回 `-1`。 | DATE\_CMP\_TIMESTAMP (date, timestamp) | INTEGER | 
| [DATE\_CMP\_TIMESTAMPTZ](r_DATE_CMP_TIMESTAMPTZ.md)比較日期與含時區的時間戳記並傳回 `0` (如果值是相同的)、`1` (如果 *date* 較大)，且 `-1` (如果 *timestamptz* 較大)。 | DATE\_CMP\_TIMESTAMPTZ (date, timestamptz) | INTEGER | 
| [DATE\_PART\_YEAR](r_DATE_PART_YEAR.md)從日期擷取年份。 | DATE\_PART\_YEAR (date) | INTEGER | 
| [DATEADD](r_DATEADD_function.md)透過指定間隔來增量日期或時間。 | DATEADD (datepart, interval, {date\|time\|timetz\|timestamp}) | TIMESTAMP、TIME 或 TIMETZ | 
| [DATEDIFF](r_DATEDIFF_function.md)傳回兩個日期或時間的差異，做為給定日期的部分 (例如日或月)。 | DATEDIFF (datepart, {date\|time\|timetz\|timestamp}, {date\|time\|timetz\|timestamp}) | BIGINT | 
| [DATE\_PART](r_DATE_PART_function.md)從日期或時間擷取日期部分值。 | DATE\_PART (datepart, {date\|timestamp}) | DOUBLE | 
| [DATE\_TRUNC](r_DATE_TRUNC.md)根據日期部分來截斷時間戳記。 | DATE\_TRUNC ('datepart', timestamp) | TIMESTAMP | 
| [EXTRACT](r_EXTRACT_function.md)從 timestamp、timestamptz、time 或 timetz 中擷取日期或時間部分。 | EXTRACT (datepart FROM source) | INTEGER or DOUBLE | 
| [GETDATE](r_GETDATE.md)傳回目前工作階段時區中的目前日期和時間 (預設為 UTC)。括號是必要的。 | GETDATE() | TIMESTAMP | 
| [INTERVAL\_CMP](r_INTERVAL_CMP.md)比較兩個間隔，如果間隔相同則傳回 `0`、如果 *interval1* 較大則傳回 `1`，而如果 *interval2* 較大則傳回 `-1`。 | INTERVAL\_CMP (interval1, interval2) | INTEGER | 
| [LAST\_DAY](r_LAST_DAY.md)傳回某月最後一天的日期，其中包含 *date*。 | LAST\_DAY(date) | DATE | 
| [MONTHS\_BETWEEN](r_MONTHS_BETWEEN_function.md)傳回兩個日期之間有幾個月。 | MONTHS\_BETWEEN (date, date) | FLOAT8 | 
| [NEXT\_DAY](r_NEXT_DAY.md)傳回晚於 *date* 的第一個 *day* 執行個體的日期。 | NEXT\_DAY (date, day) | DATE | 
| [SYSDATE](r_SYSDATE.md)傳回日期和時間 (以 UTC 表示) 做為目前交易的開始。 | SYSDATE | TIMESTAMP | 
| [TIMEOFDAY](r_TIMEOFDAY_function.md)傳回目前工作階段時區中的目前工作日 (預設為 UTC) 做為字串值。 | TIMEOFDAY() | VARCHAR | 
| [TIMESTAMP\_CMP](r_TIMESTAMP_CMP.md)比較兩個時間戳記，如果時間戳記相同則傳回 `0`、如果 *timestamp1* 較晚則傳回 `1`，而如果 *timestamp2* 較晚則傳回 `-1`。 | TIMESTAMP\_CMP (timestamp1, timestamp2) | INTEGER | 
| [TIMESTAMP\_CMP\_DATE](r_TIMESTAMP_CMP_DATE.md)比較時間戳記與日期，如果值相同則回 `0`、如果 *timestamp* 較晚則傳回 `1`，而如果 *date* 較晚則傳回 `-1`。 | TIMESTAMP\_CMP\_DATE (timestamp, date) | INTEGER | 
| [TIMESTAMP\_CMP\_TIMESTAMPTZ](r_TIMESTAMP_CMP_TIMESTAMPTZ.md)比較時間戳記與含時區的時間戳記並傳回 `0` (如果值是相同的)、`1` (如果 *timestamp* 較大)，且 `-1` (如果 *timestamptz* 較大)。 | TIMESTAMP\_CMP\_TIMESTAMPTZ (timestamp, timestamptz) | INTEGER | 
| [TIMESTAMPTZ\_CMP](r_TIMESTAMPTZ_CMP.md)比較兩個含時區值的時間戳記，如果值相同則傳回 `0`、如果 *timestamptz1* 較晚則傳回 `1`，而如果 *timestamptz2* 較晚則傳回 `-1`。 | TIMESTAMPTZ\_CMP (timestamptz1, timestamptz2) | INTEGER | 
| [TIMESTAMPTZ\_CMP\_DATE](r_TIMESTAMPTZ_CMP_DATE.md)比較含時區的時間戳記值與日期並傳回 `0` (如果值是相同的)、`1` (如果 *timestamptz* 較大)，且 `-1` (如果 *date* 較大)。 | TIMESTAMPTZ\_CMP\_DATE (timestamptz, date) | INTEGER | 
| [TIMESTAMPTZ\_CMP\_TIMESTAMP](r_TIMESTAMPTZ_CMP_TIMESTAMP.md)比較含時區的時間戳記與時間戳記並傳回 `0` (如果值是相同的)、`1` (如果 *timestamptz* 較大)，且 `-1` (如果 *timestamp* 較大)。 | TIMESTAMPTZ\_CMP\_TIMESTAMP (timestamptz, timestamp) | INTEGER | 
| [TIMEZONE](r_TIMEZONE.md)傳回時間戳記，做為指定時區和時間戳記值。 | TIMEZONE ('timezone' { timestamp \| timestamptz ) | TIMESTAMP 或 TIMESTAMPTZ | 
| [TO\_TIMESTAMP](r_TO_TIMESTAMP.md)傳回含時區的時間戳記，做為指定時間戳記和時區格式。 | TO\_TIMESTAMP ('timestamp', 'format') | TIMESTAMPTZ | 
| [TRUNC](r_TRUNC_date.md)截斷時間戳記並傳回日期。 | TRUNC(timestamp) | DATE | 

**注意**  
不會將閏秒視為歷經時間的計算中。

## 交易中日期與時間函數
<a name="date-functions-transactions"></a>

當您在交易區塊 (BEGIN … END) 中執行下列函數時，函數會傳回目前交易的開始時間，而不是目前陳述式的開始。
+ SYSDATE
+ TIMESTAMP
+ CURRENT\_DATE

下列函數一律會傳回目前陳述式的開始日期或時間 (即使他們在交易區塊中)。
+ GETDATE
+ TIMEOFDAY

## 已取代的僅限領導節點函數
<a name="date-functions-deprecated"></a>

下列日期函數已棄用，因為他們僅在領導節點上執行。如需詳細資訊，請參閱[僅限領導節點函數](c_SQL_functions_leader_node_only.md)。
+ AGE。請改用 [DATEDIFF 函數](r_DATEDIFF_function.md)。
+ CURRENT\_TIME。請改用 [GETDATE 函數](r_GETDATE.md) 或 [SYSDATE](r_SYSDATE.md)。
+ CURRENT\_TIMESTAMP。請改用 [GETDATE 函數](r_GETDATE.md) 或 [SYSDATE](r_SYSDATE.md)。
+ LOCALTIME。請改用 [GETDATE 函數](r_GETDATE.md) 或 [SYSDATE](r_SYSDATE.md)。
+ LOCALTIMESTAMP。請改用 [GETDATE 函數](r_GETDATE.md) 或 [SYSDATE](r_SYSDATE.md)。
+ ISFINITE 
+ NOW。請改用 [GETDATE 函數](r_GETDATE.md) 或 [SYSDATE](r_SYSDATE.md)。如果您在具體化視觀表內使用 NOW 函式，其會設定為具體化視觀表建立時的時間戳記，而不是目前時間戳記。