Verwenden der automatischen Erkennung bei DATEFORMAT und TIMEFORMAT - Amazon Redshift

Amazon Redshift unterstützt ab dem 1. November 2025 nicht mehr die Erstellung neuer Python-UDFs. Wenn Sie Python-UDFs verwenden möchten, erstellen Sie die UDFs vor diesem Datum. Bestehende Python-UDFs funktionieren weiterhin wie gewohnt. Weitere Informationen finden Sie im Blog-Posting.

Verwenden der automatischen Erkennung bei DATEFORMAT und TIMEFORMAT

Wenn Sie 'auto' als Argument für den Parameter DATEFORMAT oder TIMEFORMAT angeben, erkennt Amazon Redshift automatisch das Datums- oder Zeitformat in Ihren Quelldaten und konvertiert es. Es folgt ein Beispiel.

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

Wenn COPY mit dem Argument 'auto' für DATEFORMAT und TIMEFORMAT verwendet wird, erkennt COPY die Datums- und Zeitformate, die in der Tabelle in DATEFORMAT- und TIMEFORMAT-Zeichenfolgen aufgelistet sind. Zusätzlich erkennt das Argument 'auto' die folgenden Formate, die bei Verwendung einer DATEFORMAT- und TIMEFORMAT-Zeichenfolge nicht unterstützt werden.

Format Beispiel für eine gültige Eingabezeichenfolge
ISO 8601 2019-02-11T05:09:12.195Z
Julianisch 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

Die automatische Erkennung unterstützt keine Epochensekunden und Epochenmillisekunden.

Um herauszufinden, ob ein Datums- oder Zeitstempelwert automatisch konvertiert wird, verwenden Sie eine CAST-Funktion, um zu versuchen, die Zeichenfolge in einen Datums- oder Zeitstempelwert zu konvertieren. Mit den folgenden Befehlen wird beispielsweise der Zeitstempelwert getestet '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

Wenn die Quelldaten für eine DATE-Spalte Zeitinformationen enthalten, wird die Zeitkomponente abgeschnitten. Wenn die Quelldaten für eine TIMESTAMP-Spalte Zeitinformationen auslassen, wird für die Zeitkomponente 00:00:00 verwendet.