Eingabe/Ausgabe von Datum und Uhrzeit

Unter diesem Thema:

Sitzungsparameter für Datum, Uhrzeit und Zeitstempel

Mit einer Reihe von Sitzungsparametern wird bestimmt, wie Datums-, Uhrzeit- und Zeitstempeldaten in und aus Snowflake übertragen werden, sowie die Zeitzone, die in den Uhrzeit- und Zeitstempelformaten verwendet wird, die Zeitzonen unterstützen.

Die Parameter können auf Konto-, Benutzer- und Sitzungsebene eingestellt werden. Führen Sie den Befehl SHOW PARAMETERS aus, um die aktuellen Parametereinstellungen anzuzeigen, die für alle Operationen in der aktuellen Sitzung gelten.

Eingabeformate

Die folgenden Parameter definieren, welche Datums-, Uhrzeit- und Zeitstempelformate für DML erkannt werden, einschließlich der Operationen COPY, INSERT und MERGE:

Die Voreinstellung für alle drei Parameter ist AUTO. Wenn der Parameterwert auf AUTO gesetzt ist, versucht Snowflake, Datums-, Uhrzeit- und Zeitstempelzeichenfolgen in jedem Eingabeausdruck einem der Formate zuzuordnen, die unter Unterstützte Formate für AUTO-Erkennung aufgeführt sind:

  • Wenn ein passendes Format gefunden wird, akzeptiert Snowflake die Zeichenfolge.

  • Wenn kein passendes Format gefunden wird, gibt Snowflake einen Fehler zurück.

Ausgabeformate

Die folgenden Parameter definieren die Formate für die Datums- und Uhrzeitausgabe von Snowflake:

Darüber hinaus wird mit dem folgenden Parameter der TIMESTAMP-Datentypalias einer der drei TIMESTAMP_*-Varianten zugeordnet:

Zeitzone

Der folgende Parameter bestimmt die Zeitzone:

Dateiformatoptionen zum Laden/Entladen von Datum, Uhrzeit und Zeitstempel

Unabhängig von den Parametern des Ein- und Ausgabeformats bietet Snowflake drei Dateiformatoptionen, die beim Laden von Daten in oder Entladen von Daten aus Snowflake-Tabellen verwendet werden können:

  • DATE_FORMAT

  • TIME_FORMAT

  • TIMESTAMP_FORMAT

Die Optionen können direkt im Befehl COPY oder in einem benannten Stagingbereichs- oder Dateiformatobjekt angegeben werden, auf das im Befehl COPY verwiesen wird. Wenn angegeben, überschreiben diese Optionen die entsprechenden Eingabeformate (beim Laden von Daten) oder Ausgabeformate (beim Entladen von Daten).

Laden von Daten

Wenn die Optionen beim Laden von Daten verwendet werden, legen sie das Format der Datums-, Uhrzeit- und Zeitstempelzeichenfolgen Ihrer Staging-Datendateien fest. Die Optionen überschreiben die Parametereinstellungen DATE_INPUT_FORMAT, TIME_INPUT_FORMAT und TIMESTAMP_INPUT_FORMAT.

Die Standardeinstellung für alle diese Optionen ist AUTO, d. h. der Befehl COPY INTO <Tabelle> versucht, alle Datums- und Zeitstempelzeichenfolgen in den Staging-Datendateien einem der Formate zuzuordnen, die unter Unterstützte Formate für AUTO-Erkennung aufgeführt sind.

  • Wenn ein passendes Format gefunden wird, akzeptiert Snowflake die Zeichenfolge.

  • Wenn kein passendes Format gefunden wird, gibt Snowflake einen Fehler zurück und führt dann die für die Kopieroption ON_ERROR angegebene Aktion aus.

Warnung

Snowflake unterstützt die automatische Erkennung der gängigsten Datums-, Uhrzeit- und Zeitstempelformate (siehe Tabellen unten). Einige Formate können jedoch zu mehrdeutigen Ergebnissen führen, was wiederum dazu führt, dass Snowflake beim Laden von Daten mit der Option AUTO ein falsches Format verwendet.

Um ein korrektes Laden der Daten sicherzustellen, empfehlen wir nachdrücklich, die Dateiformatoptionen für das Laden der Daten explizit festzulegen.

Entladen von Daten

Wenn die Optionen beim Entladen von Daten verwendet werden, geben sie das Format an, das auf Datumsangaben, Uhrzeiten und Zeitstempel angewendet wird, welche in die Dateien des angegebene Stagingbereichs entladen werden.

Die Voreinstellung für alle diese Optionen ist AUTO, was bedeutet, dass Snowflake die in den folgenden Parametern angegebene Formatierung anwendet:

  • DATE_OUTPUT_FORMAT

  • TIME_OUTPUT_FORMAT

  • TIMESTAMP_*_OUTPUT_FORMAT (abhängig von der TIMESTAMP_TYPE_MAPPING-Einstellung)

Unterstützte Formate für AUTO-Erkennung

Auf Anweisung erkennt und verarbeitet Snowflake automatisch die folgenden Formate für Datums-, Uhrzeit- und Zeitstempel-Eingabezeichenfolgen.

Achtung

Einige Zeichenfolgen können mehreren Formaten entsprechen. Beispiel: „07-04-2016“ ist sowohl mit MM-DD-YYYY als auch mit DD-MM-YYYY kompatibel, hat aber jeweils eine andere Bedeutungen (4. Juli vs. 7. April). Die Tatsache, dass ein passendes Format gefunden wird, garantiert nicht, dass die Zeichenfolge wie vom Benutzer beabsichtigt analysiert wird.

Die automatische Erkennung des Datumsformats ist zwar praktisch, erhöht jedoch die Wahrscheinlichkeit, dass Datumsangaben falsch interpretiert werden. Snowflake empfiehlt daher dringend, das Format explizit anzugeben, anstatt sich auf die automatische Datumserkennung zu verlassen.

Datumsformate

Format

Beispiel

Anmerkungen

ISO-Datumsformate

YYYY-MM-DD

2013-04-28

Andere Datumsformate

DD-MON-YYYY

17-DEC-1980

MM/DD/YYYY

12/17/1980

Beim Laden oder Bearbeiten von Daten in gängigen europäischen Formaten (d. h. DD/MM/YYYY) können falsche Datumswerte entstehen. So könnte beispielsweise „05/02/2013“ als 2. Mai 2013 anstelle von 5. Februar 2013 interpretiert werden.

Bei Verwendung der Datumsformatierung AUTO sind Striche und Schrägstriche nicht austauschbar. Schrägstriche bedeuten das Format MM/DD/YYYY und Bindestriche das Format YYYY-MM-DD. Zeichenfolgen wie „2019/01/02“ oder „01-02-2019“ werden nicht wie erwartet interpretiert.

Uhrzeitformate

Format

Beispiel

Anmerkungen

ISO-Uhrzeitformate

HH24:MI:SS.FFTZH:TZM

20:57:01.123456789+07:00

HH24:MI:SS.FF

20:57:01.123456789

HH24:MI:SS

20:57:01

HH24:MI

20:57

Internet (RFC)-Uhrzeitformate

HH12:MI:SS.FF AM

07:57:01.123456789 AM

HH12:MI:SS AM

04:01:07 AM

HH12:MI AM

04:01 AM

Der Formatbezeichner AM ermöglicht Werte mit AM oder PM.

Zeitstempelformate

Format

Beispiel

Anmerkungen

ISO-Zeitstempelformate

YYYY-MM-DD"T"HH24:MI:SS.FFTZH:TZM

2013-04-28T20:57:01.123456789+07:00

Die doppelten Anführungszeichen um das T sind optional (Einzelheiten finden Sie in dem dieser Tabelle folgenden Tipp).

YYYY-MM-DD HH24:MI:SS.FFTZH:TZM

2013-04-28 20:57:01.123456789+07:00

YYYY-MM-DD HH24:MI:SS.FFTZH

2013-04-28 20:57:01.123456789+07

YYYY-MM-DD HH24:MI:SS.FF TZH:TZM

2013-04-28 20:57:01.123456789 +07:00

YYYY-MM-DD HH24:MI:SS.FF TZHTZM

2013-04-28 20:57:01.123456789 +0700

YYYY-MM-DD HH24:MI:SS TZH:TZM

2013-04-28 20:57:01 +07:00

YYYY-MM-DD HH24:MI:SS TZHTZM

2013-04-28 20:57:01 +0700

YYYY-MM-DD"T"HH24:MI:SS.FF

2013-04-28T20:57:01.123456

Die doppelten Anführungszeichen um das T sind optional (Einzelheiten finden Sie in dem dieser Tabelle folgenden Tipp).

YYYY-MM-DD HH24:MI:SS.FF

2013-04-28 20:57:01.123456

YYYY-MM-DD"T"HH24:MI:SS

2013-04-28T20:57:01

Die doppelten Anführungszeichen um das T sind optional (Einzelheiten finden Sie in dem dieser Tabelle folgenden Tipp).

YYYY-MM-DD HH24:MI:SS

2013-04-28 20:57:01

YYYY-MM-DD"T"HH24:MI

2013-04-28T20:57

Die doppelten Anführungszeichen um das T sind optional (Einzelheiten finden Sie in dem dieser Tabelle folgenden Tipp).

YYYY-MM-DD HH24:MI

2013-04-28 20:57

YYYY-MM-DD"T"HH24

2013-04-28T20

Die doppelten Anführungszeichen um das T sind optional (Einzelheiten finden Sie in dem dieser Tabelle folgenden Tipp).

YYYY-MM-DD HH24

2013-04-28 20

YYYY-MM-DD"T"HH24:MI:SSTZH:TZM

2013-04-28T20:57:01-07:00

Die doppelten Anführungszeichen um das T sind optional (Einzelheiten finden Sie in dem dieser Tabelle folgenden Tipp).

YYYY-MM-DD HH24:MI:SSTZH:TZM

2013-04-28 20:57:01-07:00

YYYY-MM-DD HH24:MI:SSTZH

2013-04-28 20:57:01-07

YYYY-MM-DD"T"HH24:MITZH:TZM

2013-04-28T20:57+07:00

Die doppelten Anführungszeichen um das T sind optional (Einzelheiten finden Sie in dem dieser Tabelle folgenden Tipp).

YYYY-MM-DD HH24:MITZH:TZM

2013-04-28 20:57+07:00

Internet (RFC)-Zeitstempelformate

DY, DD MON YYYY HH24:MI:SS TZHTZM

Thu, 21 Dec 2000 16:01:07 +0200

DY, DD MON YYYY HH24:MI:SS.FF TZHTZM

Thu, 21 Dec 2000 16:01:07.123456789 +0200

DY, DD MON YYYY HH12:MI:SS AM TZHTZM

Thu, 21 Dec 2000 04:01:07 PM +0200

DY, DD MON YYYY HH12:MI:SS.FF AM TZHTZM

Thu, 21 Dec 2000 04:01:07.123456789 PM +0200

DY, DD MON YYYY HH24:MI:SS

Thu, 21 Dec 2000 16:01:07

DY, DD MON YYYY HH24:MI:SS.FF

Thu, 21 Dec 2000 16:01:07.123456789

DY, DD MON YYYY HH12:MI:SS AM

Thu, 21 Dec 2000 04:01:07 PM

DY, DD MON YYYY HH12:MI:SS.FF AM

Thu, 21 Dec 2000 04:01:07.123456789 PM

Andere Zeitstempelformate

MM/DD/YYYY HH24:MI:SS

2/18/2008 02:36:48

Beim Laden oder Bearbeiten von Daten in gängigen europäischen Formaten (d. h. DD/MM/YYYY) können falsche Datumswerte entstehen. So könnte beispielsweise „05/02/2013“ als 2. Mai 2013 anstelle von 5. Februar 2013 interpretiert werden.

DY MON DD HH24:MI:SS TZHTZM YYYY

Mon Jul 08 18:09:51 +0000 2013

Tipp

In einigen Zeitstempelformaten wird der Buchstabe T als Trennzeichen zwischen Datum und Uhrzeit verwendet (z. B. 'YYYY-MM-DD"T"HH24:MI:SS').

Die doppelten Anführungszeichen um das T sind optional. Snowflake empfiehlt jedoch die Verwendung von doppelten Anführungszeichen um das T (oder andere Literale), um Mehrdeutigkeiten zu vermeiden.

Die doppelten Anführungszeichen sollten nur im Formatbezeichner stehen, nicht in den tatsächlichen Werten. Beispiel:

SELECT TO_TIMESTAMP('2019-02-28T23:59:59', 'YYYY-MM-DD"T"HH24:MI:SS');

Außerdem müssen die Anführungszeichen um T doppelte Anführungszeichen sein.

Zusätzliche Informationen

In den folgenden Abschnitten werden Anforderungen und bewährte Methoden für einzelne Felder in Bezug auf Datum, Uhrzeit und Zeitstempel beschrieben.

Gültige Wertebereiche für Felder

Die empfohlenen Wertebereiche für jedes Feld sind nachstehend aufgeführt:

Feld

Werte

Anmerkungen

Jahre

0001 bis 9999

Einige Werte außerhalb dieses Bereichs werden möglicherweise in bestimmten Kontexten akzeptiert. Snowflake empfiehlt jedoch, nur Werte in diesem Bereich zu verwenden. Beispielsweise wird das Jahr 0000 akzeptiert, ist jedoch falsch, da im Gregorianischen Kalender das Jahr 1 AD unmittelbar nach dem Jahr 1 v. Chr. steht. Es gibt kein Jahr 0.

Monate

01 bis 12

Tage

01 bis 31

In Monaten mit weniger als 31 Tagen ist das tatsächliche Maximum die Anzahl der Tage im Monat.

Stunden

00 bis 23

oder 00-11, wenn Sie das Format HH12 verwenden.

Minuten

00 bis 59

Sekunden

00 bis 59

Snowflake unterstützt weder Schaltsekunden, noch doppelte Schaltsekunden. Die Werte 60 und 61 werden abgelehnt.

Bruchteil

0 bis 999999999

Die Anzahl der Nachkommastellen hängt zum Teil vom genauen Formatbezeichner ab (z. B. unterstützt FF3 bis zu 3 Nachkommastellen und FF9 bis zu 9 Nachkommastellen). Sie können weniger Ziffern eingeben, als Sie angegeben haben (z. B. ist die Eingabe von 1 zulässig, auch wenn Sie FF9 verwenden). Es ist nicht erforderlich, das Feld mit nachstehenden Nullen auf die angegebene Breite aufzufüllen.

Verwenden der korrekten Anzahl von Ziffern mit Formatelementen

Für die meisten Felder (Jahr, Monat, Tag, Stunde, Minute und Sekunde) bestehen die Elemente (YYYY, MM, DD usw.) des Formatspezifizierers aus zwei oder vier Zeichen.

Die folgenden Regeln geben an, wie viele Stellen in den Literalwerten tatsächlich angegeben werden sollen.

  • YYYY: Sie können für die Angabe des Jahres 1, 2, 3 oder 4 Ziffern verwenden. Snowflake empfiehlt jedoch die Angabe von 4 Ziffern. Stellen Sie gegebenenfalls führende Nullen voran. Beispiel: Das Jahr 536 AD würde beispielsweise „0536“ lauten.

  • YY: Verwenden Sie für die Angabe des Jahres 1 oder 2 Ziffern. Snowflake empfiehlt jedoch die Angabe von 2 Ziffern. Stellen Sie gegebenenfalls eine führende Null voran.

  • MM: Geben Sie eine oder zwei Ziffern an. Beispiel: Januar kann mit „01“ oder „1“ angegeben werden. Snowflake empfiehlt die Verwendung von zwei Ziffern.

  • DD: Geben Sie eine oder zwei Ziffern an. Snowflake empfiehlt die Verwendung von zwei Ziffern.

  • HH: Geben Sie eine oder zwei Ziffern an. Snowflake empfiehlt die Verwendung von zwei Ziffern.

  • MI: Geben Sie eine oder zwei Ziffern an. Snowflake empfiehlt die Verwendung von zwei Ziffern.

  • SS: Geben Sie eine oder zwei Ziffern an. Snowflake empfiehlt die Verwendung von zwei Ziffern.

  • FF9: Geben Sie zwischen 1 und 9 Ziffern (einschließlich) an. Snowflake empfiehlt, die tatsächliche Anzahl signifikanter Stellen anzugeben. Nachstehende Nullen sind nicht erforderlich.

  • TZH: Geben Sie eine oder zwei Ziffern an. Snowflake empfiehlt die Verwendung von zwei Ziffern.

  • TZM: Geben Sie eine oder zwei Ziffern an. Snowflake empfiehlt die Verwendung von zwei Ziffern.

Für alle Felder (außer Sekundenbruchteilen) empfiehlt Snowflake die Angabe der maximalen Anzahl von Stellen. Verwenden Sie gegebenenfalls führende Nullen. Beispiel: „0001-02-03 04:05:06 -07:00“ folgt dem empfohlenen Format.

Nachstehende Nullen sind für Sekundenbruchteile optional. Im Allgemeinen wird empfohlen, nur die Anzahl der Stellen anzugeben, die zuverlässig und aussagekräftig sind. Wenn eine Zeitmessung beispielsweise auf 3 Dezimalstellen (Millisekunden) genau ist, kann die Angabe von 9 Ziffern (z. B. „0,123000000“) irreführend sein.

Leerzeichen in Werten und Formatangaben

Snowflake erzwingt das Anpassen von Leerzeichen in einigen, aber nicht allen Situationen. Die folgende Anweisung generiert beispielsweise einen Fehler, da im angegebenen Wert kein Leerzeichen zwischen den Tagen und den Stunden, im Formatbezeichner jedoch ein Leerzeichen zwischen DD und HH vorhanden ist:

SELECT TO_TIMESTAMP('2019-02-2823:59:59 -07:00', 'YYYY-MM-DD HH24:MI:SS TZH:TZM');

Die folgende Anweisung generiert jedoch keinen Fehler, obwohl der Wert ein Leerzeichen enthält, das im Bezeichner nicht angegeben ist:

SELECT TO_TIMESTAMP('2019-02-28 23:59:59.000000000 -07:00', 'YYYY-MM-DDHH24:MI:SS.FF TZH:TZM');

Der Grund für den Unterschied liegt darin, dass im ersten Fall die Werte nicht eindeutig wären, wenn nicht alle Felder ihre maximale Breite aufweisen würden. Beispielsweise könnte „213“ als 2 Tage und 13 Stunden oder als 21 Tage und 3 Stunden interpretiert werden. Das Format DDHH ist jedoch eindeutig mit DD HH identisch (bis auf das Leerzeichen).

Tipp

Obwohl einige Leerzeichenunterschiede zulässig sind, um unterschiedlich formatierte Daten zu verarbeiten, empfiehlt Snowflake, dass Werte und Bezeichner auch hinsichtlich der Leerzeichen genau übereinstimmen.

Kontextabhängigkeit

Nicht alle Einschränkungen werden in allen Kontexten gleichermaßen durchgesetzt. Beispielsweise können einige Ausdrücke den 31. Februar als Übertrag interpretieren, andere möglicherweise nicht.

Zusammenfassung der Best Practices

Die folgenden bewährten Methoden minimieren Mehrdeutigkeiten und andere potenzielle Probleme in früheren, aktuellen und geplanten zukünftigen Versionen von Snowflake:

  • Beachten Sie die Gefahren beim Mischen von Daten aus Quellen, die unterschiedliche Formate verwenden (z. B. beim Mischen von Daten, die dem allgemeinen US-Format MM-DD-YYYY und dem allgemeinen europäischen Format DD-MM-YYYY entsprechen).

  • Geben Sie die maximale Anzahl von Stellen für jedes Feld an (außer Sekundenbruchteile). Verwenden Sie beispielsweise 4-stellige Jahresangaben, und geben Sie gegebenenfalls führende Nullen an.

  • Geben Sie in einem Zeitstempel zwischen Datum und Uhrzeit ein Leerzeichen oder den Buchstaben T an.

  • Leerzeichen (und das optionale T-Trennzeichen zwischen Datum und Uhrzeit) sollten in den Werten und im Formatbezeichner identisch sein.

  • Verwenden Sie die Intervallarithmetik, wenn Sie einen Übertrag benötigen.

  • Seien Sie vorsichtig, wenn Sie die AUTO-Formatierung verwenden. Geben Sie nach Möglichkeit das Format an, und stellen Sie sicher, dass die Werte immer dem angegebenen Format entsprechen.

  • Formate sollten aus Sicherheitsgründen besser innerhalb eines Befehl als außerhalb angegeben werden, beispielsweise in einem Parameter wie DATE_INPUT_FORMAT (siehe Beispiel unten).

  • Stellen Sie beim Verschieben von Skripten von einer Umgebung in eine andere sicher, dass datumsbezogene Parameter wie DATE_INPUT_FORMAT in der neuen Umgebung dieselben sind wie in der alten Umgebung (vorausgesetzt, die Werte haben auch dasselbe Format).

Datums- und Uhrzeitfunktionen

Snowflake bietet eine Reihe von Funktionen zum Erstellen, Konvertieren, Extrahieren oder Ändern von DATE/TIME/TIMESTAMP-Daten. Weitere Informationen dazu finden Sie unter Datums- und Uhrzeitfunktionen.

AUTO-Erkennung von als Ganzzahl gespeicherten Datums-, Uhrzeit- und Zeitstempelwerten

Für Ganzzahlen von Sekunden oder Millisekunden, die in einer Zeichenfolge gespeichert sind, versucht Snowflake, die korrekte Zeitmessung anhand der Länge des Wertes zu ermitteln. Um beispielsweise den Zeitstempel zu berechnen, der 1487654321 Sekunden seit Beginn der Unix-Epoche entspricht, gehen Sie wie folgt vor:

select to_timestamp('1487654321');
-------------------------------+
  TO_TIMESTAMP('1487654321')   |
-------------------------------+
 2017-02-20 21:18:41.000000000 |
-------------------------------+

Hier ist eine ähnliche Berechnung mit Millisekunden seit Beginn der Epoche:

select to_timestamp('1487654321321');
-------------------------------+
 TO_TIMESTAMP('1487654321321') |
-------------------------------+
 2017-02-20 21:18:41.321000000 |
-------------------------------+

Je nach Zieldatentyp wird eine andere Eingangsgröße angenommen:

  • TIME: Snowflake verwendet Sekunden als Größe.

  • DATE und TIMESTAMP:

    • Nachdem die Zeichenfolge in eine Ganzzahl konvertiert wurde, wird die Ganzzahl als Anzahl von Sekunden, Millisekunden, Mikrosekunden oder Nanosekunden nach dem Beginn der Unix-Epoche behandelt (1970-01-01 00:00:00.000000000 UTC).

      • Wenn die Ganzzahl kleiner als 31.536.000.000 (die Anzahl der Millisekunden eines Jahres) ist, wird der Wert als Anzahl der Sekunden behandelt.

      • Wenn der Wert größer oder gleich 31.536.000.000 und kleiner als 31.536.000.000.000 ist, wird der Wert als Millisekunden behandelt.

      • Wenn der Wert größer oder gleich 31.536.000.000.000 und kleiner als 31.536.000.000.000.000 ist, wird der Wert als Mikrosekunde behandelt.

      • Wenn der Wert größer oder gleich 31.536.000.000.000.000 ist, wird der Wert als Nanosekunde behandelt.

    • Wenn mehr als eine Zeile ausgewertet wird (Eingabe ist z. B. der Spaltenname einer Tabelle, die mehr als zwei Zeilen enthält), bestimmt der erste verarbeitete Wert, ob alle nachfolgenden Werte als Sekunden, Millisekunden, Mikrosekunden oder Nanosekunden behandelt werden.

      Wenn der erste Wert größer oder gleich 31.536.000.000 ist, werden alle Werte als Millisekunden behandelt, auch wenn einige verbleibende Werte kleiner als 31.536.000.000 sind. Eine ähnliche Logik gilt für Mikrosekunden und Nanosekunden.

    Vorsicht

    Derzeit werden negative Werte immer als Sekunden behandelt. Beispielsweise wird -31.536.000.000.000.000.000 als eine Anzahl von Sekunden vor dem Jahr 1970 behandelt, obwohl seine Skala impliziert, dass es als Nanosekunden verwendet werden soll.

    Dieses Verhalten kann sich in Zukunft möglicherweise ändern.

    Vorsicht

    Warnung vor Veralten: Zukünftige Versionen von Snowflake interpretieren möglicherweise Ganzzahlen in Zeichenfolgen automatisch als Sekunden und nicht als Millisekunden, Mikrosekunden oder Nanosekunden. Snowflake empfiehlt, dass Sie bei Zeichenfolgen, die nur Ganzzahlen enthalten, welche als Sekunden interpretiert werden sollen, TO_DATE oder TO_TIMESTAMP aufrufen.

Um die Wahrscheinlichkeit einer falschen Formaterkennung zu verringern, löst Snowflake beim Erkennen eines reinen Ganzzahlenformats zusammen mit einem anderen Format einen Fehler aus. Beispiel:

select to_timestamp(column1) from values('1487654321');
-------------------------------+
     TO_TIMESTAMP(COLUMN1)     |
-------------------------------+
 2017-02-20 21:18:41.000000000 |
-------------------------------+

select to_timestamp(column1) from values('2013-04-05');
-------------------------------+
     TO_TIMESTAMP(COLUMN1)     |
-------------------------------+
 2013-04-05 00:00:00.000000000 |
-------------------------------+

select to_timestamp(column1) from values('1487654321'),('2013-04-05');
FAILURE: Timestamp '2013-04-05' is not recognized

select to_timestamp(column1) from values ('2013-04-05'), ('1487654321');
FAILURE: Timestamp '1487654321' is not recognized

Vorsicht

Um unerwartete Ergebnisse zu vermeiden, dürfen Sie in derselben Spalte nicht verschiedene Wertebereiche von Ganzzahlen vermischen, wie Ganzzahlen im Sekunden- und Millisekundenbereich. Beispiel:

select to_timestamp(column1) from values('1487654321321'),('1487654321');
-------------------------------+
     TO_TIMESTAMP(COLUMN1)     |
-------------------------------+
 2017-02-20 21:18:41.321000000 |
 1970-01-17 21:14:14.321000000 |
-------------------------------+

select to_timestamp(column1) from values('1487654321'),('1487654321321');
--------------------------------+
     TO_TIMESTAMP(COLUMN1)      |
--------------------------------+
 2017-02-20 21:18:41.000000000  |
 49111-11-21 23:28:41.000000000 |
--------------------------------+

Best Practices zu Formaten in Datums- und Uhrzeitfunktionen

Die AUTO-Erkennung bestimmt normalerweise das korrekte Eingabeformat. Es gibt jedoch Situationen, in denen es möglicherweise nicht möglich ist, die korrekte Bestimmung vorzunehmen.

Um dies zu vermeiden, empfiehlt Snowflake dringend die folgenden Best Practices (Ersetzen von TO_DATE , DATE oder TO_TIME , TIME für TO_TIMESTAMP):

  • Vermeiden Sie die Verwendung des Formats AUTO, wenn mehrdeutige Ergebnisse möglich sind. Geben Sie eine explizite Formatzeichenfolge wie folgt an:

  • Bei Zeichenfolgen, die ganzzahlige Werte enthalten, geben Sie folgende Größe an:

    TO_TIMESTAMP(TO_NUMBER(<string_column>), <scale>)