Eingabe- und Ausgabeformate für Datum und Uhrzeit¶
Unter diesem Thema:
Wie Snowflake die zu verwendenden Eingabe- und Ausgabeformate bestimmt¶
Um die Eingabe- und Ausgabeformate für Datums-, Uhrzeit- und Zeitstempel zu bestimmen, verwendet Snowflake Folgendes:
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, die 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)
In Eingabe- und Ausgabeformaten verwendete Elemente¶
In Eingabe- und Ausgabeformaten, die Sie in Parametern, Dateiformatoptionen und Konvertierungsfunktionen angeben, können Sie die in der folgenden Tabelle aufgeführten Elemente verwenden.
In den nächsten Abschnitten werden ebenfalls diese Elemente verwendet, um die von Snowflake automatisch erkannten Formate zu beschreiben.
Formatelement |
Beschreibung |
---|---|
|
Vierstellige Jahresangabe. |
|
Zweistellige Jahresangabe, gesteuert durch den Sitzungsparameter TWO_DIGIT_CENTURY_START, z. B. wenn dieser auf |
|
Zweistellige Monatsangabe (01=Januar usw.). |
|
Vollständiger oder abgekürzter Monatsname. |
|
Vollständiger Monatsname. |
|
Zweistellige Tagesangabe des Monats (01 bis 31). |
|
Abgekürzter Wochentag. |
|
Zwei Ziffern für die Stunde (00 bis 23). |
|
Zwei Ziffern für die Stunde (01 bis 12). |
|
Ante Meridiem (AM) / Post Meridiem (PM). Verwenden Sie diese Angabe nur mit |
|
Zwei Ziffern für die Minute (00 bis 59). |
|
Zwei Ziffern für die Sekunde (00 bis 59). |
|
Sekundenbruchteile mit einer Genauigkeit von 0 (Sekunden) bis 9 (Nanosekunden), z. B. |
|
Zeitzonenstunde und -minute, Offset von UTC. Kann |
|
Vierstellige Jahreszahl im ISO-Format, die für Jahre v. u. Z. negativ ist. |
Bemerkung
Bei Verwendung eines reinen Datumsformats wird davon ausgegangen, dass die zugehörige Uhrzeit Mitternacht an diesem Tag ist.
Alles, was im Format zwischen doppelten Anführungszeichen oder anderen als den oben genannten Elementen liegt, wird analysiert und formatiert, ohne interpretiert zu werden.
Weitere Informationen zu gültigen Bereichen, die Anzahl der Ziffern und zu bewährten Verfahren finden Sie unter Zusätzliche Informationen zur Verwendung von Datums-, Uhrzeit- und Zeitstempelformaten.
Unterstützte Formate für AUTO-Erkennung¶
Auf Anweisung erkennt und verarbeitet Snowflake automatisch bestimmte Formate für Datums-, Uhrzeit- und Zeitstempel-Eingabezeichenfolgen. In den folgenden Abschnitten werden die unterstützten Formate beschrieben:
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¶
Beschreibungen der in den nachstehenden Formaten verwendeten Elemente finden Sie unter In Eingabe- und Ausgabeformaten verwendete Elemente.
Format |
Beispiel |
Anmerkungen |
---|---|---|
ISO-Datumsformate |
||
YYYY-MM-DD |
|
|
Andere Datumsformate |
||
DD-MON-YYYY |
|
|
MM/DD/YYYY |
|
Beim Laden oder Bearbeiten von Daten in gängigen europäischen Formaten (d. h. |
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¶
Beschreibungen der in den nachstehenden Formaten verwendeten Elemente finden Sie unter In Eingabe- und Ausgabeformaten verwendete Elemente.
Format |
Beispiel |
Anmerkungen |
---|---|---|
ISO-Uhrzeitformate |
||
HH24:MI:SS.FFTZH:TZM |
|
|
HH24:MI:SS.FF |
|
|
HH24:MI:SS |
|
|
HH24:MI |
|
|
Internet (RFC)-Uhrzeitformate |
||
HH12:MI:SS.FF AM |
|
|
HH12:MI:SS AM |
|
|
HH12:MI AM |
|
Das Formatelement AM
ermöglicht Werte mit AM
oder PM
.
Bemerkung
Das Formatelement AM
darf nur mit HH12
verwendet werden (nicht mit HH24
).
Wenn ein Zeitzonenversatz (z. B. „0800“) in einer Uhrzeit- oder Zeitstempel-Zeichenfolge unmittelbar nach einer Ziffer auftritt, muss der Zeitzonenversatz mit +
oder -
beginnen. Das Vorzeichen verhindert Mehrdeutigkeit, wenn der Sekundenbruchteil oder der Zeitzonenoffset nicht die maximal zulässige Anzahl von Ziffern enthält. Ohne ein Trennzeichen zwischen der letzten Ziffer der Sekundenbruchteile und der ersten Ziffer der Zeitzone könnte z. B. „1“ in der Zeitangabe „04:04:04.321200“ entweder die letzte Ziffer der Sekundenbruchteile (z. B. 321 Millisekunden) oder die erste Ziffer des Zeitzonenversatzes (z. B. 12 Stunden vor UTC) sein.
Zeitstempelformate¶
Beschreibungen der in den nachstehenden Formaten verwendeten Elemente finden Sie unter In Eingabe- und Ausgabeformaten verwendete Elemente.
Format |
Beispiel |
Anmerkungen |
---|---|---|
ISO-Zeitstempelformate** |
||
YYYY-MM-DD"T"HH24:MI:SS.FFTZH:TZM |
|
Die doppelten Anführungszeichen um das |
YYYY-MM-DD HH24:MI:SS.FFTZH:TZM |
|
|
YYYY-MM-DD HH24:MI:SS.FFTZH |
|
|
YYYY-MM-DD HH24:MI:SS.FF TZH:TZM |
|
|
YYYY-MM-DD HH24:MI:SS.FF TZHTZM |
|
|
YYYY-MM-DD HH24:MI:SS TZH:TZM |
|
|
YYYY-MM-DD HH24:MI:SS TZHTZM |
|
|
YYYY-MM-DD"T"HH24:MI:SS.FF |
|
Die doppelten Anführungszeichen um das |
YYYY-MM-DD HH24:MI:SS.FF |
|
|
YYYY-MM-DD"T"HH24:MI:SS |
|
Die doppelten Anführungszeichen um das |
YYYY-MM-DD HH24:MI:SS |
|
|
YYYY-MM-DD"T"HH24:MI |
|
Die doppelten Anführungszeichen um das |
YYYY-MM-DD HH24:MI |
|
|
YYYY-MM-DD"T"HH24 |
|
Die doppelten Anführungszeichen um das |
YYYY-MM-DD HH24 |
|
|
YYYY-MM-DD"T"HH24:MI:SSTZH:TZM |
|
Die doppelten Anführungszeichen um das |
YYYY-MM-DD HH24:MI:SSTZH:TZM |
|
|
YYYY-MM-DD HH24:MI:SSTZH |
|
|
YYYY-MM-DD"T"HH24:MITZH:TZM |
|
Die doppelten Anführungszeichen um das |
YYYY-MM-DD HH24:MITZH:TZM |
|
|
Internet (RFC)-Zeitstempelformate |
||
DY, DD MON YYYY HH24:MI:SS TZHTZM |
|
|
DY, DD MON YYYY HH24:MI:SS.FF TZHTZM |
|
|
DY, DD MON YYYY HH12:MI:SS AM TZHTZM |
|
|
DY, DD MON YYYY HH12:MI:SS.FF AM TZHTZM |
|
|
DY, DD MON YYYY HH24:MI:SS |
|
|
DY, DD MON YYYY HH24:MI:SS.FF |
|
|
DY, DD MON YYYY HH12:MI:SS AM |
|
|
DY, DD MON YYYY HH12:MI:SS.FF AM |
|
|
Andere Zeitstempelformate |
||
MM/DD/YYYY HH24:MI:SS |
|
Beim Laden oder Bearbeiten von Daten in gängigen europäischen Formaten (d. h. |
DY MON DD HH24:MI:SS TZHTZM YYYY |
|
Wenn ein Zeitzonenversatz (z. B. „0800“) in einer Uhrzeit- oder Zeitstempel-Zeichenfolge unmittelbar nach einer Ziffer auftritt, muss der Zeitzonenversatz mit +
oder -
beginnen. Das Vorzeichen verhindert Mehrdeutigkeit, wenn der Sekundenbruchteil oder der Zeitzonenoffset nicht die maximal zulässige Anzahl von Ziffern enthält. Ohne ein Trennzeichen zwischen der letzten Ziffer der Sekundenbruchteile und der ersten Ziffer der Zeitzone könnte z. B. „1“ in der Zeitangabe „04:04:04.321200“ entweder die letzte Ziffer der Sekundenbruchteile (z. B. 321 Millisekunden) oder die erste Ziffer des Zeitzonenversatzes (z. B. 12 Stunden vor UTC) sein.
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 zur Verwendung von Datums-, Uhrzeit- und Zeitstempelformaten¶
In den folgenden Abschnitten werden Anforderungen und bewährte Methoden für einzelne Felder in Bezug auf Datum, Uhrzeit und Zeitstempel beschrieben.
Verwenden der korrekten Anzahl von Ziffern mit Formatelementen
Zusammenfassung der Best Practices für die Angabe des Formats
Gültige Wertebereiche für Felder¶
Die empfohlenen Wertebereiche für jedes Feld sind nachstehend aufgeführt:
Feld |
Werte |
Anmerkungen |
---|---|---|
Jahre |
|
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 |
|
|
Tage |
|
In Monaten mit weniger als 31 Tagen ist das tatsächliche Maximum die Anzahl der Tage im Monat. |
Stunden |
|
oder |
Minuten |
|
|
Sekunden |
|
Snowflake unterstützt weder Schaltsekunden, noch doppelte Schaltsekunden. Die Werte |
Bruchteil |
|
Die Anzahl der Nachkommastellen hängt zum Teil vom genauen Formatbezeichner ab (z. B. unterstützt |
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.HH12
undHH24
: 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 für die Angabe des Formats¶
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 FormatDD-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 Maßeinheit anhand der Länge des Wertes zu ermitteln.
Bemerkung
Die Verwendung von Ganzzahlen in Anführungszeichen als Eingabewerte ist veraltet.
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 Größe des Wertes verwendet Snowflake eine andere Maßeinheit:
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.
Bemerkung
Warnung vor Veralten: In zukünftigen Snowflake-Versionen werden Ganzzahlen in Zeichenfolgen möglicherweise automatisch als Sekunden und nicht als Millisekunden, Mikrosekunden oder Nanosekunden interpretiert. Snowflake empfiehlt, dass Sie bei Zeichenfolgen, die nur Ganzzahlen enthalten, welche als Sekunden interpretiert werden sollen, TO_DATE, TO_TIME oder TO_TIMESTAMP aufrufen.
Wenn mehr als eine Zeile ausgewertet wird (z. B. bei Eingabe der Spaltenname einer Tabelle, die mehr als eine Zeile enthält), bestimmt der erste verarbeitete Wert, ob alle nachfolgenden Werte als Sekunden, Millisekunden, Mikrosekunden oder Nanosekunden behandelt werden.
In Fällen, in denen formatierte Zeichenfolgen und ganze Zahlen in Zeichenfolgen an die Funktion übergeben werden, wird jeder Wert entsprechend dem Inhalt der Zeichenfolge umgewandelt. Wenn Sie z. B. eine datumsformatierte Zeichenfolge und eine Zeichenfolge mit einer ganzen Zahl an TO_TIMESTAMP übergeben, interpretiert die Funktion jeden Wert korrekt, je nachdem, was die Zeichenfolge enthält:
select to_timestamp(column1) from values ('2013-04-05'), ('1487654321');
+-------------------------+
| TO_TIMESTAMP(COLUMN1) |
|-------------------------|
| 2013-04-05 00:00:00.000 |
| 2017-02-21 05:18:41.000 |
+-------------------------+
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:
Einstellen von TIMESTAMP_INPUT_FORMAT und anderen Sitzungsparametern für Datum, Zeitstempel und Uhrzeit. Siehe Sitzungsparameter für Datum, Uhrzeit und Zeitstempel (unter diesem Thema).
Angeben des Formats mithilfe der folgenden Syntax:
TO_TIMESTAMP(<value>, '<format>')
Bei Zeichenfolgen, die ganzzahlige Werte enthalten, geben Sie folgende Größe an:
TO_TIMESTAMP(TO_NUMBER(<string_column>), <scale>)