本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
對 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 字串時不支援這些格式)。
格式 | 有效輸入字串的範例 |
---|---|
ISO 8601 | 2019-02-11T05:09:12.195Z |
凱撒曆 | 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(21));
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。