對 DATEFORMAT 和 TIMEFORMAT 使用自動辨識 - Amazon Redshift

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

對 DATEFORMAT 和 TIMEFORMAT 使用自動辨識

如果您指定'auto'作為 DATEFORMAT 或 TIMEFORMAT 參數的參數,Amazon Redshift 會自動識別和轉換來源資料中的日期格式或時間格式。下列顯示一個範例。

copy favoritemovies from 'dynamodb://ProductCatalog' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' dateformat 'auto';

搭配 DATEFORMAT 和 TIMEFORMAT 的 'auto' 引數一起使用時,COPY 會辨識和轉換 DATEFORMAT 和 TIMEFORMAT 字串 中資料表所列出的日期和時間格式。此外,'auto' 引數還可以辨識下列格式 (使用 DATEFORMAT 和 TIMEFORMAT 字串時不支援這些格式)。

格式 有效輸入字串的範例
凱撒曆 J2451187
BC Jan-08-95 BC
YYYYMMDD HHMISS 19960108 040809
YYMMDD HHMISS 960108 040809
YYYY.DDD 1996.008
YYYY-MM-DD HH:MI:SS.SSS 1996-01-08 04:05:06.789
DD Mon HH:MI:SS YYYY TZ 17 Dec 07:37:16 1997 PST
MM/DD/YYYY HH:MI:SS.SS TZ 12/17/1997 07:37:16.00 PST
YYYY-MM-DD HH:MI:SS+/-TZ 1997-12-17 07:37:16-08
DD.MM.YYYY HH:MI:SS TZ 12.17.1997 07:37:16.00 PST

自動辨識不支援 epoch 秒和 epoch 毫秒。

若要測試日期或時間戳記值是否會自動轉換,請使用 CAST 函數來嘗試將字串轉換為日期或時間戳記值。例如,下列命令測試時間戳記值 'J2345678 04:05:06.789'

create table formattest (test char(16)); insert into formattest values('J2345678 04:05:06.789'); select test, cast(test as timestamp) as timestamp, cast(test as date) as date from formattest; test | timestamp | date ----------------------+---------------------+------------ J2345678 04:05:06.789 1710-02-23 04:05:06 1710-02-23

如果 DATE 欄的來源資料包含時間資訊,則會截斷時間部分。如果 TIMESTAMP 欄的來源資料省略時間資訊,則時間部分會使用 00:00:00。