日期和時間函數 - Amazon Redshift

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

日期和時間函數

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

日期和時間函數的摘要

函式 語法 傳回值
+ (串連) 運算子

將日期與 + 符號兩側的時間串連起來,並傳回 TIMESTAMP 或 TIMESTAMPTZ。

date + time TIMESTAMPTIMESTAMPZ
ADD_MONTHS

將指定幾個月新增至日期或時間戳記。

ADD_MONTHS ({date|timestamp}, integer) TIMESTAMP
AT TIME ZONE

指定要透過 TIMESTAMP 或 TIMESTAMPTZ 表達式來使用哪一個時區。

AT TIME ZONE 'timezone' TIMESTAMPTIMESTAMPZ
CONVERT_TIMEZONE

可將時間戳記從一個時區轉換為另一個時區。

CONVERT_TIMEZONE (['timezone',] 'timezone', timestamp) TIMESTAMP
CURRENT_DATE

傳回目前工作階段時區中的日期 (預設為 UTC) 做為目前交易的開始。

CURRENT_DATE DATE
DATE_CMP

比較兩個日期並傳回 0 (如果日期是相同的)、1 (如果 date1 較大),且 -1 (如果 date2 較大)。

DATE_CMP (date1, date2) INTEGER
DATE_CMP_TIMESTAMP

比較日期與時間並傳回 0 (如果值是相同的)、1 (如果 date 較大),且 -1 (如果 timestamp 較大)。

DATE_CMP_TIMESTAMP (date, timestamp) INTEGER
DATE_CMP_TIMESTAMPTZ

比較日期與含時區的時間戳記並傳回 0 (如果值是相同的)、1 (如果 date 較大),且 -1 (如果 timestamptz 較大)。

DATE_CMP_TIMESTAMPTZ (date, timestamptz) INTEGER
DATE_PART_YEAR

從日期擷取年份。

DATE_PART_YEAR (date) INTEGER
DATEADD

透過指定間隔來增量日期或時間。

DATEADD (datepart, interval, {date|time|timetz|timestamp}) TIMESTAMPTIMETIMETZ
DATEDIFF

傳回兩個日期或時間的差異,做為給定日期的部分 (例如日或月)。

DATEDIFF (datepart, {date|time|timetz|timestamp}, {date|time|timetz|timestamp}) BIGINT
DATE_PART

從日期或時間擷取日期部分值。

DATE_PART (datepart, {date|timestamp}) DOUBLE
DATE_TRUNC

根據日期部分來截斷時間戳記。

DATE_TRUNC ('datepart', timestamp) TIMESTAMP
EXTRACT

從 timestamp、timestamptz、time 或 timetz 中擷取日期或時間部分。

EXTRACT (datepart FROM source) INTEGER or DOUBLE
GETDATE

傳回目前工作階段時區中的目前日期和時間 (預設為 UTC)。括號是必要的。

GETDATE() TIMESTAMP
INTERVAL_CMP

比較兩個間隔並傳回 0 (如果間隔是相同的)、1 (如果 interval1 較大),且 -1 (如果 interval2 較大)。

INTERVAL_CMP (interval1, interval2) INTEGER
LAST_DAY

傳回某月最後一天的日期,其中包含 date

LAST_DAY(date) DATE
MONTHS_BETWEEN

傳回兩個日期之間有幾個月。

MONTHS_BETWEEN (date, date) FLOAT8
NEXT_DAY

傳回晚於 date 的第一個 day 執行個體的日期。

NEXT_DAY (date, day) DATE
SYSDATE

傳回日期和時間 (以 UTC 表示) 做為目前交易的開始。

SYSDATE TIMESTAMP
TIMEOFDAY

傳回目前工作階段時區中的目前工作日 (預設為 UTC) 做為字串值。

TIMEOFDAY() VARCHAR
TIMESTAMP_CMP

比較兩個時間戳記並傳回 0 (如果時間戳記是相同的)、1 (如果 timestamp1 較大),且 -1 (如果 timestamp2 較大)。

TIMESTAMP_CMP (timestamp1, timestamp2) INTEGER
TIMESTAMP_CMP_DATE

比較時間戳記與日期並傳回 0 (如果值是相同的)、1 (如果 timestamp 較大),且 -1 (如果 date 較大)。

TIMESTAMP_CMP_DATE (timestamp, date) INTEGER
TIMESTAMP_CMP_TIMESTAMPTZ

比較時間戳記與含時區的時間戳記並傳回 0 (如果值是相同的)、1 (如果 timestamp 較大),且 -1 (如果 timestamptz 較大)。

TIMESTAMP_CMP_TIMESTAMPTZ (timestamp, timestamptz) INTEGER
TIMESTAMPTZ_CMP

比較兩個含時區的時間戳記並傳回 0 (如果值是相同的)、1 (如果 timestamptz1 較大),且 -1 (如果 timestamptz2 較大)。

TIMESTAMPTZ_CMP (timestamptz1, timestamptz2) INTEGER
TIMESTAMPTZ_CMP_DATE

比較含時區的時間戳記值與日期並傳回 0 (如果值是相同的)、1 (如果 timestamptz 較大),且 -1 (如果 date 較大)。

TIMESTAMPTZ_CMP_DATE (timestamptz, date) INTEGER
TIMESTAMPTZ_CMP_TIMESTAMP

比較含時區的時間戳記與時間戳記並傳回 0 (如果值是相同的)、1 (如果 timestamptz 較大),且 -1 (如果 timestamp 較大)。

TIMESTAMPTZ_CMP_TIMESTAMP (timestamptz, timestamp) INTEGER
TIMEZONE

傳回時間戳記,做為指定時區和時間戳記值。

TIMEZONE ('timezone' { timestamp | timestamptz ) TIMESTAMPTIMESTAMPTZ
TO_TIMESTAMP

傳回含時區的時間戳記,做為指定時間戳記和時區格式。

TO_TIMESTAMP ('timestamp', 'format') TIMESTAMPTZ
TRUNC

截斷時間戳記並傳回日期。

TRUNC(timestamp) DATE
注意

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

交易中日期與時間函數

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

  • SYSDATE

  • TIMESTAMP

  • CURRENT_DATE

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

  • GETDATE

  • TIMEOFDAY

已取代的僅限領導節點函數

下列日期函數已棄用,因為他們僅在領導節點上執行。如需詳細資訊,請參閱 僅限領導節點函數