Datentypen für Datum und Uhrzeit¶
Snowflake unterstützt Datentypen zum Verwalten von Datumsangaben, Uhrzeiten und Zeitstempeln (Kombination aus Datum und Uhrzeit) Snowflake unterstützt auch Formate für Zeichenfolgen, die bei der Bearbeitung von Datumsangaben, Uhrzeiten und Zeitstempeln verwendet werden.
Datentypen¶
Snowflake unterstützt die folgenden Datums- und Zeitdatentypen:
Bemerkung
Für DATE- und TIMESTAMP-Daten empfiehlt Snowflake die Verwendung von Jahreswerten zwischen 1582 und 9999. Snowflake akzeptiert einige Jahre außerhalb dieses Bereichs, aber Jahre vor 1582 sollten aufgrund von Einschränkungen im Gregorianischen Kalender vermieden werden.
DATE¶
Snowflake unterstützt nur einen DATE-Datentyp zum Speichern von Datumsangaben (ohne Zeitelemente).
DATE akzeptiert Datumsangaben in den gebräuchlichsten Formen (YYYY-MM-DD, DD-MON-YYYY und so weiter).
Darüber hinaus sind alle akzeptierten TIMESTAMP-Werte auch gültige Eingaben für Datumsangaben, allerdings wird die TIME-Information abgeschnitten.
DATETIME¶
DATETIME ist gleichbedeutend mit TIMESTAMP_NTZ.
Interval-Datentypen¶
Intervall-Datentypen speichern Werte, die eine Zeitdauer darstellen. Sie können ein Intervall als die Differenz zwischen zwei Datumsangaben oder Uhrzeiten berechnen. Ein Intervall definiert nur eine Dauer, hat also keinen zeitlichen Start- oder Endpunkt. Sie könnten zum Beispiel ein Intervall von drei Jahren und sieben Monaten definieren.
Snowflake unterstützt die folgenden Jahr-Monat-Varianten von Intervall-Datentypen:
Datentyp |
Beschreibung |
|---|---|
INTERVAL-YEAR |
Stellt eine Zeitdauer in Jahren dar. |
INTERVAL YEAR TO MONTH |
Stellt eine Zeitdauer in Jahren und Monaten dar. |
INTERVAL-MONTH |
Stellt eine Zeitdauer in Monaten dar. |
Snowflake unterstützt die folgenden Tag-Uhrzeit-Varianten von Intervall-Datentypen:
Datentyp |
Beschreibung |
|---|---|
INTERVAL-DAY |
Stellt eine Zeitdauer in Tagen dar. |
INTERVAL DAY TO HOUR |
Stellt eine Zeitdauer in Tagen und Stunden dar. |
INTERVAL DAY TO MINUTE |
Stellt eine Zeitdauer in Tagen, Stunden und Minuten dar. |
INTERVAL DAY TO SECOND |
Stellt eine Zeitdauer in Tagen, Stunden, Minuten, Sekunden und Sekundenbruchteilen dar. |
INTERVAL-HOUR |
Stellt eine Zeitdauer in Stunden dar. |
INTERVAL HOUR TO MINUTE |
Stellt eine Zeitdauer in Stunden und Minuten dar. |
INTERVAL HOUR TO SECOND |
Stellt eine Zeitdauer in Stunden, Minuten, Sekunden und Sekundenbruchteilen dar. |
INTERVAL-MINUTE |
Stellt eine Zeitdauer in Minuten dar. |
INTERVAL MINUTE TO SECOND |
Stellt eine Zeitdauer in Minuten, Sekunden und Sekundenbruchteilen dar. |
INTERVAL-SECOND |
Stellt eine Zeitdauer in Sekunden und Sekundenbruchteilen dar. |
In den folgenden Abschnitten werden die Intervall-Datentypen näher beschrieben:
Bemerkung
Sie können auch Intervallkonstanten für Datums- und Zeitberechnungen. Allerdings unterstützen Intervallkonstanten keine Intervallspeicherung als Spaltentyp.
Vorteile von Intervall-Datentypen¶
Intervall-Datentypen bieten die folgenden Vorteile:
Sorgen für eine genaue Datumsberechnung ohne Mehrdeutigkeiten.
Eliminieren die Notwendigkeit von manueller Konvertierung und Umwandlung von ganzzahlbasierten Zeitdauern.
Optimieren der Speicherung für Daten, die Zeitintervalle darstellen.
Optimieren der Abfrageausführung für Zeitdauerdaten.
Vereinfachen der Migration von Daten aus Datenbanken von Drittanbietern wie Databricks, Oracle und Teradata.
Vollständige Einhaltung von ANSI-Standards.
Syntax von Intervall-Datentypen¶
Um einen Intervall-Datentyp anzugeben, verwenden Sie die folgende Syntax:
Wobei:
Eigenschaften:
precisionist die Gesamtzahl der zulässigen Stellen. Die Genauigkeit kann zwischen1und9liegen.Standard:
9fractional_seconds_precisionist die Anzahl der Ziffern im Bruchteil einer Sekunde. Die Zeitgenauigkeit kann zwischen0(Sekunden) und9(Nanosekunden) liegen.Standard:
9
Verwenden Sie diese Syntax, wenn Sie einen Intervall-Datentyp angeben. Die folgende Tabelle hat zum Beispiel eine duration-Spalte vom Typ INTERVAL YEAR TO MONTH:
Darstellung von Intervallwerten¶
Sie können einen Intervallwert mithilfe eines Intervall-Literals oder eines Intervallformats darstellen:
Intervall-Literale¶
Ein Intervall-Literal ist ein Ausdruck, der eine Zeitdauer in einem Zeichenfolgenliteral angibt. Verwenden Sie die folgende Syntax, um ein Intervall-Literal anzugeben:
Wobei:
signist ein optionales Symbol, das eine positive (+) oder negative (-) Zeitdauer angibt.Standard:
+.stringist ein Wert, der eine Zeitdauer repräsentiert.yearMonthQualifierist ein Qualifizierer, der in Syntax von Intervall-Datentypen definiert ist.dayTimeQualifierist ein Qualifizierer, der in Syntax von Intervall-Datentypen definiert ist.
Intervallformate¶
Zeichenfolgenliterale in bestimmten Formaten können Intervallwerte darstellen.
Um Werte für Jahre und Monate anzugeben, verwenden Sie das folgende Format:
Wobei:
signist ein erforderliches Symbol, das eine positive (+) oder negative (-) Zeitdauer angibt.Standard:
+.Yist die Anzahl der Jahre. Die Anzahl der zulässigen Stellen (Genauigkeit) hängt vom Datentyp des Wertes ab.MMsind zwei Ziffern für die Anzahl der Monate, von00bis``11``.
Um Werte für Tage, Stunden, Sekunden und Sekundenbruchteile anzugeben, verwenden Sie das folgende Format:
Wobei:
signist ein erforderliches Symbol, das eine positive (+) oder negative (-) Zeitdauer angibt.Standard:
+.Dist die Anzahl der Tage. Die Anzahl der zulässigen Stellen (Genauigkeit) hängt vom Datentyp des Wertes ab.Lassen Sie
Dfür Werte der folgenden Typen weg:INTERVAL-HOUR
INTERVAL HOUR TO MINUTE
INTERVAL HOUR TO SECOND
INTERVAL-MINUTE
INTERVAL MINUTE TO SECOND
INTERVAL-SECOND
HH24sind zwei Ziffern für die Anzahl der Stunden, von00bis23.Lassen Sie
HH24für Werte der folgenden Typen weg:INTERVAL-DAY
INTERVAL-MINUTE
INTERVAL MINUTE TO SECOND
INTERVAL-SECOND
MIsind zwei Ziffern für die Anzahl der Minuten, von00bis``59``.Lassen Sie
MIfür Werte der folgenden Typen weg:INTERVAL DAY TO HOUR
INTERVAL-DAY
INTERVAL-HOUR
INTERVAL-SECOND
SSsind zwei Ziffern für die Anzahl der Sekunden, von00bis``59``.Lassen Sie
SSfür Werte der folgenden Typen weg:INTERVAL-DAY
INTERVAL DAY TO HOUR
INTERVAL DAY TO MINUTE
INTERVAL-HOUR
INTERVAL HOUR TO MINUTE
INTERVAL-MINUTE
Fist die Anzahl der Sekundenbruchteile für die Datentypen, die Sekunden enthalten. Die Anzahl der zulässigen Stellen (Genauigkeit) hängt vom Datentyp des Wertes ab.
Die folgenden Nutzungshinweise gelten für Zeichenfolgenliterale im Intervallformat:
Die Darstellung des Zeichenfolgenliterals gilt, wenn Sie die Funktion CAST oderTO_CHAR verwenden, um Intervalle explizit in Textzeichenfolgen umzuwandeln.
Führende Nullen in einem Feld geben die Genauigkeit an.
Beispiele für Intervallwerte¶
Die folgende Tabelle zeigt, wie Sie verschiedene Intervallwerte darstellen können. Die in der Tabelle angezeigten Werte entsprechen den folgenden Regeln für Intervallwerte:
Bei positiven Werten ist das Pluszeichen:code:
+optional für Intervall-Literalwerte, aber erforderlich für Intervallformatwerte.In den Intervall-Literalwerten gibt der Wert in Klammern die Genauigkeit an, d. h. die Anzahl der zulässigen Stellen. Beispiel:
YEAR(3)legt fest, dass drei Ziffern für das Jahr zulässig sind.In den Intervallformatwerten enthält das primäre Feld (das führende Feld) keine führenden Nullen. Untergeordnete Felder verwenden eine feste Anzahl von Ziffern. Beispiel: In einem YEAR TO MONTH-Wert wie
+1-08enthält das Jahresfeld keine führenden Nullen, und das Monatsfeld verwendet zwei Ziffern.
Dauer |
Typ |
Intervall-Literalwert |
Intervallformatwert |
|---|---|---|---|
Positive 5 Jahre |
INTERVAL-YEAR |
|
|
Positives 1 Jahr und 8 Monate |
INTERVAL YEAR TO MONTH |
|
|
Negative 5 Monate |
INTERVAL-MONTH |
|
|
Positive 14 Monate |
INTERVAL-MONTH |
|
|
Negative 44 Jahre und 11 Monate |
INTERVAL YEAR TO MONTH |
|
|
Positive 11 Tage, 10 Stunden und 9 Minuten |
INTERVAL DAY TO MINUTE |
|
|
Positive 2 Tage, 23 Stunden, 8 Minuten, 23 Sekunden und 275 Millisekunden |
INTERVAL DAY TO SECOND |
|
|
Positive 4 Sekunden und 300 Millisekunden |
INTERVAL-SECOND |
|
|
Operationen, die Datums- und Zeitwerte beinhalten¶
Die folgende Tabelle zeigt den Datentyp des Ergebnisses für gültige Rechenoperationen, die Intervallwerte beinhalten:
Erster Operand |
Operator |
Zweiter Operand |
Ergebnistyp |
|---|---|---|---|
Zeitstempel |
|
Zeitstempel |
Ein Intervall-Datentyp |
Datum oder Zeitstempel |
|
Intervall |
DATE, DATETIME, TIMESTAMP_LTZ, TIMESTAMP_NTZ oder TIMESTAMP_TZ |
Datum oder Zeitstempel |
|
Intervall |
DATE, DATETIME, TIMESTAMP_LTZ, TIMESTAMP_NTZ oder TIMESTAMP_TZ |
Intervall |
|
Datum oder Zeitstempel |
DATE, DATETIME, TIMESTAMP_LTZ, TIMESTAMP_NTZ oder TIMESTAMP_TZ |
Numerisch |
|
Intervall |
Ein Intervall-Datentyp |
Intervall |
|
Numerisch |
Ein Intervall-Datentyp |
Intervall |
|
Numerisch |
Ein Intervall-Datentyp |
Intervall |
|
Intervall |
Ein Intervall-Datentyp |
Intervall |
|
Intervall |
Ein Intervall-Datentyp |
Bei Operationen, die zwei Intervallwerte beinhalten, müssen die beiden Werte für Jahr-Monat-Intervalle oder beide Werte für Tag-Uhrzeit-Intervalle sein. Operationen, die Jahr-Monat-Intervallwerte und Tag-Uhrzeit-Intervallwerte mischen, werden nicht unterstützt. Wenn die Operation zwei Jahr-Monat-Intervallwerte umfasst, ist der Ergebnistyp ein Jahr-Monat-Intervalltyp. Wenn die Operation zwei Tag-Uhrzeit-Intervallwerte umfasst, ist der Ergebnistyp ein Tag-Uhrzeit-Intervalltyp.
Funktionen, die Intervallwerte als Argumente akzeptieren¶
Die folgenden Funktionen akzeptieren Intervallwerte als Argumente:
Beispiele für Intervall-Datentypen¶
Die folgenden Beispiele zeigen, wie Sie Intervall-Datentypen verwenden:
Durchführen von Arithmetik unter Verwendung von Intervalldaten
Kopieren von Intervalldaten in eine Tabelle und Abfragen der Tabelle
Durchführen von Arithmetik unter Verwendung von Intervalldaten¶
Die folgenden Beispiele führen Arithmetik unter Verwendung von Intervalldaten aus.
Hinzufügen von einem Jahr und einem Monats zu einem Datum:
Abziehen von einem Jahr und einem Monat von einem Datum:
Hinzufügen von einem bestimmten Zeitraum zu einem Zeitstempel:
Im folgenden Beispiel wird die Funktion :doc:`/sql-reference/functions/system_typeof`verwendet, um zu zeigen, dass ein INTERVAL DAY TO SECOND-Wert zurückgegeben wird, wenn eine Abfrage zwei Zeitstempelwerte abzieht:
Um die Ergebnisse der Abfrage im Intervallformat anzuzeigen, können Sie den Ausdruck in den Datentyp INTERVAL DAY(2) TO SECOND(2) umwandeln, um die Genauigkeit anzugeben, und dann in VARCHAR umwandeln:
Einfügen und Abfragen von Jahr-Monat-Intervalldaten¶
Erstellen Sie eine Tabelle, die Kandidaten für offene Stellen mit einer INTERVAL YEAR TO MONTH-Spalte verfolgt, und fügen Sie Daten ein:
Wenn Sie die Tabelle abfragen, ohne die duration_of_experience`-Spalte in einen Datentyp umzuwandeln, enthält die Ausgabe die Werte der Spalte als Gesamtzahl der Monate in jeder Zeile:
Wenn Sie die Tabelle abfragen und die duration_of_experience-Spalte in den VARCHAR-Datentyp umwandeln, zeigt die Ausgabe die Spaltenwerte im Intervallformat an:
Einfügen und Abfragen von Tag-Uhrzeit-Intervalldaten¶
Erstellen Sie eine Tabelle, die die Timeout-Dauer für verschiedene Software-Features mit einer INTERVAL HOUR TO SECOND-Spalte angibt, und fügen Sie Daten ein:
Fragen Sie die Tabelle ab, und wandeln Sie die timeout_duration-Spalte in den VARCHAR-Datentyp um:
Kopieren von Intervalldaten in eine Tabelle und Abfragen der Tabelle¶
Führen Sie die folgenden Schritte aus, um eine Datei mit Intervalldaten bereitzustellen, und kopieren Sie die Datei dann in eine Tabelle:
Kopieren Sie den folgenden Inhalt in eine Datei in Ihrem Dateisystem:
In diesem Beispiel wird davon ausgegangen, dass die Datei
interval_values.csvheißt und sich im Verzeichnis/examples/intervals/befindet.Erstellen Sie einen Stagingbereich:
Stellen Sie die Datei im internen Staging-Speicherort bereit:
Erstellen Sie eine Tabelle für die Daten:
Um die Stagingdatei in die von Ihnen erstellte Tabelle zu laden, verwenden Sie den Befehl COPY INTO <Tabelle>:
Um die geladenen Daten anzuzeigen, fragen Sie die Tabelle ab und wandeln Sie sie in den VARCHAR-Typ um:
Einschränkungen für Intervall-Datentypen¶
Die folgenden Einschränkungen gelten für Intervall-Datentypen:
Jahr-Monat-Intervallwerte können nicht mit Tag-Uhrzeit-Intervallwerten kombiniert oder verglichen werden.
Intervallkonstanten und Werte des Intervall-Datentyps können nicht kombiniert oder verglichen werden.
Intervallkonstanten können nicht in eine Spalte eingefügt werden, die einen Intervall-Datentyp hat.
VARIANT-Werte können keine Intervallwerte enthalten.
Werte des strukturierten Datentyps können keine Intervallwerte enthalten.
Intervall-Ausdrücke können nicht in benutzerdefinierte Funktionen (UDFs) oder Snowflake Scripting verwendet werden.
Die folgenden Arten von Tabellen können keine Intervallspalten haben:
Abfragen für Intervallspalten können nicht von Suchoptimierungsdienst profitieren.
TIME¶
Snowflake unterstützt einen einzigen TIME-Datentyp zum Speichern von Zeiten im Format HH:MI:SS.
TIME unterstützt einen optionalen Genauigkeitsparameter für Sekundenbruchteile (z. B. TIME(3)). Die Zeitgenauigkeit kann zwischen 0 (Sekunden) und 9 (Nanosekunden) liegen. Die Standardgenauigkeit ist 9.
Alle TIME-Werte müssen zwischen 00:00:00 und 23:59:59.999999999 liegen. TIME speichert intern die lokale Zeit vor Ort, d. h. alle Operationen für TIME-Werte werden ohne jegliche Berücksichtigung von Zeitzonen durchgeführt.
TIMESTAMP_LTZ , TIMESTAMP_NTZ , TIMESTAMP_TZ¶
Snowflake unterstützt drei Zeitstempelvarianten:
- TIMESTAMP_LTZ:
TIMESTAMP_LTZ speichert UTC-Werte intern mit der angegebenen Genauigkeit. Alle Operationen werden jedoch in der Zeitzone der aktuellen Sitzung ausgeführt, gesteuert vom Sitzungsparameter TIMEZONE.
Gleichbedeutend mit TIMESTAMP_LTZ:
TIMESTAMPLTZ
TIMESTAMP WITH LOCAL TIME ZONE
- TIMESTAMP_NTZ:
TIMESTAMP_NTZ speichert intern die „Wanduhr“-Zeit mit einer bestimmten Genauigkeit. Alle Operationen werden ohne Berücksichtigung von Zeitzonen durchgeführt.
Wenn das Ausgabeformat eine Zeitzone enthält, wird der UTC-Indikator (
Z) angezeigt.TIMESTAMP_NTZ ist die Standardeinstellung für TIMESTAMP.
Gleichbedeutend mit TIMESTAMP_NTZ:
TIMESTAMPNTZ
TIMESTAMP WITHOUT TIME ZONE
DATETIME
- TIMESTAMP_TZ:
TIMESTAMP_TZ speichert intern UTC-Werte zusammen mit einem zugehörigen Zeitzonenoffset. Wenn keine Zeitzone angegeben wird, wird der Zeitzonenversatz der Sitzung verwendet. Alle Operationen werden mit dem für jeweiligen Datensatz spezifischen Zeitzonenoffset durchgeführt.
Gleichbedeutend mit TIMESTAMP_TZ:
TIMESTAMPTZ
TIMESTAMP WITH TIME ZONE
TIMESTAMP_TZ-Werte werden anhand ihrer Zeiten in UTC verglichen. Der folgende Vergleich zwischen verschiedenen Zeiten in unterschiedlichen Zeitzonen gibt zum Beispiel TRUE zurück, da die beiden Werte äquivalente Zeiten in UTC haben.
Achtung
Aktuell speichert TIMESTAMP_TZ zum Zeitpunkt der Erstellung für einen bestimmten Wert nur den Offset einer gegebenen Zeitzone, nicht die Zeitzone selbst. Dies ist besonders wichtig für die Sommerzeit, die von UTC nicht genutzt wird.
Wenn der Parameter TIMEZONE beispielsweise auf "America/Los_Angeles" gesetzt ist, wird beim Konvertieren eines Werts in TIMESTAMP_TZ im Januar eines gegebenen Jahres der Zeitzonenoffset -0800 gespeichert. Wenn der Wert später um sechs Monate erhöht wird, wird der Offset -0800 beibehalten, obwohl der Offset für Los Angeles im Juli -0700 lautet. Das liegt daran, dass nach Erstellung des Werts die Information zur aktuellen Zeitzone ("America/Los_Angeles") nicht mehr verfügbar ist. Das folgende Codebeispiel veranschaulicht dieses Verhalten:
TIMESTAMP¶
TIMESTAMP in Snowflake ist ein benutzerdefinierter Alias, der einer der TIMESTAMP_*-Varianten zugeordnet ist. Bei allen Operationen, in denen TIMESTAMP verwendet wird, wird automatisch die zugeordnete TIMESTAMP_*-Variante verwendet. Der Datentyp TIMESTAMP wird niemals in Tabellen gespeichert.
Die mit TIMESTAMP verknüpfte TIMESTAMP_*-Variante wird durch den Sitzungsparameter TIMESTAMP_TYPE_MAPPING angegeben. Die Voreinstellung ist TIMESTAMP_NTZ.
Alle Zeitstempelvarianten und der TIMESTAMP-Alias unterstützen einen optionalen Präzisionsparameter für Sekundenbruchteile (z. B. TIMESTAMP(3)). Die Genauigkeit eines Zeitstempels kann zwischen 0 (Sekunden) und 9 (Nanosekunden) liegen. Die Standardgenauigkeit ist 9.
Beispiele für Zeitstempel¶
Diese Beispiele erstellen eine Tabelle mit verschiedenen Zeitstempeln.
Erstellen Sie zunächst eine Tabelle mit einer TIMESTAMP-Spalte (zugeordnet zu TIMESTAMP_NTZ):
Als Nächstes verwenden Sie explizit eine der TIMESTAMP Varianten (TIMESTAMP_LTZ):
Verwenden von TIMESTAMP_LTZ mit verschiedenen Zeitzonen:
Diese Abfrage zeigt, dass es am 2. Januar 08:00 Uhr in Los Angeles ist (das ist 16:00 Uhr in UTC):
Beachten Sie außerdem, dass sich die Zeiten mit einer anderen Zeitzone ändern:
Erstellen Sie eine Tabelle und verwenden Sie TIMESTAMP_NTZ:
Beachten Sie, dass beide Zeiten aus verschiedenen Zeitzonen in dieselbe „Wanduhr“-Zeit umgerechnet werden:
Beachten Sie außerdem, dass eine Änderung der Zeitzone der Sitzung keinen Einfluss auf die Ergebnisse hat:
Erstellen Sie eine Tabelle und verwenden Sie TIMESTAMP_TZ:
Beachten Sie, dass der Datensatz vom 1. Januar die Zeitzone der Sitzung übernommen hat und America/Los_Angeles in einen numerischen Zeitzonenversatz umgewandelt wurde:
Beachten Sie außerdem, dass eine Änderung der Zeitzone der Sitzung keinen Einfluss auf die Ergebnisse hat:
Unterstützter Kalender¶
Snowflake verwendet für alle Datumsangaben und Zeitstempel den gregorianischen Kalender. Der gregorianische Kalender beginnt im Jahr 1582, berücksichtigt jedoch frühere Jahre. Dies ist wichtig, da Snowflake keine Datumsangaben vor 1582 (oder Berechnungen mit Datumsangaben vor 1582) anpasst, um mit dem julianischen Kalender übereinzustimmen. Das Formatelement UUUU unterstützt negative Jahreszahlen.
Datums- und Uhrzeitformate¶
Alle diese Datentypen akzeptieren die meisten nicht eindeutigen Datums-, Zeit- oder Datums- und Zeitformate. Weitere Informationen zu Unterstützte Formate für AUTO-Erkennung für die Formate, die Snowflake erkennt, wenn die automatische Erkennung von Formaten konfiguriert ist.
Sie können das Datums- und Uhrzeitformat auch manuell angeben. Bei der Angabe des Formats können Sie die in der folgenden Tabelle aufgeführten Elemente verwenden, bei denen die Groß-/Kleinschreibung nicht berücksichtigt wird:
Formatelement |
Beschreibung |
|---|---|
|
Vierstellige Jahresangabe des Typs [1]. |
|
Zweistellige Jahresangabe des Typs [1], gesteuert durch den Sitzungsparameter TWO_DIGIT_CENTURY_START. Wenn Sie zum Beispiel |
|
Ein- oder zweistellige [2] Jahresangabe ohne führende Nullen, gesteuert durch den TWO_DIGIT_CENTURY_START-Sitzungsparameter. Wenn der Parameter beispielsweise auf |
|
Zweistellige Monatsangabe des Typs [1] ( |
|
Ein- oder zweistellige [2] Monatsangabe ohne führende Nullen ( |
|
Abgekürzter Monatsname [3]. |
|
Vollständiger Monatsname [3]. |
|
Zweistellige Angabe für Tag des Monats des Typs [1] ( |
|
Ein- oder zweistellige [2] Angabe für Tag des Monats ohne führende Nullen ( |
|
Abgekürzter Wochentag. |
|
Zweistellige Angabe [1] für Stunde ( |
|
Zweistellige Angabe [1] für Stunde ( |
|
Ein- oder zweistellige Angabe [2] für Stunde ohne führende Nullen ( |
|
Ein- oder zweistellige Angabe [2] für Stunde ohne führende Nullen ( |
|
Ante Meridiem ( |
|
Ante Meridiem ( |
|
Synonym für |
|
Synonym für |
|
Zweistellige Minutenangabe des Typs [1] ( |
|
Ein- oder zweistellige Angabe [2] für Minute ohne führende Nullen ( |
|
Zweistellige Sekundenangabe des Typs [1] ( |
|
Ein- oder zweistellige Angabe :sup:` [2]` für Sekunde ohne führende Nullen ( |
|
Sekundenbruchteile mit der Genauigkeit |
|
Zweistellige Zeitzonenstunde und -minute des Typs [1], Offset von UTC. Kann |
|
Vierstellige Jahreszahl im ISO-Format, die für Jahre v. u. Z. negativ ist. |
[1] Die Anzahl der Ziffern beschreibt die Ausgabe, die beim Serialisieren von Werten in Text erzeugt wird. Beim Parsen von Text akzeptiert Snowflake Werte bis zur angegebenen Anzahl von Ziffern. Zum Beispiel kann die Nummer für einen Tag aus ein oder zwei Ziffern bestehen.
[2] Die Anzahl der Ziffern beschreibt die Ausgabe, die beim Serialisieren von Werten in Text erzeugt wird. Analysieren wird nicht unterstützt. Wenn das Analysieren erforderlich ist, verwenden Sie ein gleichwertiges Format, das führende Nullen enthält. Diese Formatelemente werden in BCR Bundle 2026_03 aktiviert.
[3] Für das MON-Formatelement ist die Ausgabe, die bei der Serialisierung von Werten in Text erzeugt wird, der abgekürzte Monatsname. Für das MMMM-Formatelement ist die Ausgabe, die bei der Serialisierung von Werten in Text erzeugt wird, der vollständige Monatsname. Beim Analysieren von Text akzeptiert Snowflake die dreistellige Abkürzung oder den vollständigen Monatsnamen für MON und MMMM. Beispielsweise werden „Januar“ oder „Jan“, „Februar“ oder „Feb“ usw. beim Analysieren von Text akzeptiert.
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. Snowflake empfiehlt, stets Literalzeichen in doppelte Anführungszeichen zu setzen (z. B.
"T","EST","Z"), um sicherzustellen, dass sie als Literale behandelt 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.
Beispiele für die Verwendung von Datums- und Uhrzeitformaten¶
Im folgenden Beispiel wird FF verwendet, um anzugeben, dass die Ausgabe im Feld „Sekundenbruchteil“ 9 Ziffern hat:
Datums- und Uhrzeitkonstanten¶
Konstanten (auch bekannt als Literale) sind feste Datenwerte. Snowflake unterstützt die Angabe von festen Datums-, Zeit- oder Zeitstempelwerten unter Verwendung von Zeichenfolgenkonstanten. Zeichenfolgenkonstanten müssen immer zwischen Trennzeichen eingeschlossen sein. Snowflake unterstützt die Nutzung einfacher Anführungszeichen zum Trennen von Zeichenfolgenkonstanten.
Beispiel:
Die Zeichenfolge wird als DATE-, TIME- oder TIMESTAMP-Wert analysiert, basierend auf dem Eingabeformat für den Datentyp, wie durch die folgenden Parameter festgelegt:
- DATE:
- TIME:
- TIMESTAMP:
Fügen Sie beispielsweise ein bestimmtes Datum in eine Spalte einer Tabelle ein:
Intervallkonstanten¶
Sie können Intervallkonstanten verwenden, um einen Zeitraum zu bzw. von einem Datum, einer Uhrzeit oder einem Zeitstempel zu addieren oder abzuziehen. Intervallkonstanten werden mit dem Schlüsselwort INTERVAL implementiert, das die folgende Syntax aufweist:
Wie bei allen Zeichenfolgenkonstanten erfordert Snowflake einfache Anführungszeichen, um Intervallkonstanten zu trennen.
Bemerkung
Intervallkonstanten unterstützen Datums- und Zeitberechnungen, aber nicht die Intervallspeicherung als Spaltentyp. Um Intervallwerte in einer Spalte zu speichern, können Sie Intervall-Datentypen verwenden.
Das Schlüsselwort INTERVAL unterstützt eine oder mehrere Ganzzahlen und optional eine oder mehrere Datums- oder Uhrzeitkomponenten. Beispiel:
INTERVAL '1 year'steht für ein Jahr.INTERVAL '4 years, 5 months, 3 hours'entspricht vier Jahren, fünf Monaten und drei Stunden.
Wenn keine Datums- oder Zeitkomponente angegeben ist, stellt das Intervall Sekunden dar (so entspricht INTERVAL '2' z. B. INTERVAL '2 seconds'). Beachten Sie, dass sich dies von der Standardzeiteinheit zur Durchführung der Datumsberechnung unterscheidet. Weitere Details dazu finden Sie unter Einfache Arithmetik für Datumsangaben.
Die Liste der unterstützten Datums- und Uhrzeitkomponenten finden Sie unter Unterstützte Datums- und Uhrzeitkomponenten bei Intervallen.
Bemerkung
Die Reihenfolge der Intervallinkremente ist wichtig. Die Inkremente werden in der angegebenen Reihenfolge addiert oder subtrahiert. Beispiel:
INTERVAL '1 year, 1 day'addiert oder subtrahiert zuerst ein Jahr und dann einen Tag.INTERVAL '1 day, 1 year'addiert oder subtrahiert zuerst einen Tag und dann ein Jahr.
Unterschiede in der Reihenfolge können sich auf Berechnungen auswirken, die durch Kalenderereignisse wie Schaltjahre beeinflusst werden:
INTERVAL ist kein Datentyp ist (d. h. Sie können keine Tabellenspalte mit dem Datentyp INTERVALdefinieren). Intervalle können nur für Datums-, Uhrzeit- und Zeitstempelberechnungen verwendet werden.
Sie können kein Intervall mit einer SQL-Variable verwenden. Die folgende Abfrage gibt zum Beispiel einen Fehler zurück:
Unterstützte Datums- und Uhrzeitkomponenten bei Intervallen¶
Das Schlüsselwort INTERVAL unterstützt die folgenden Datums- und Uhrzeitkomponenten als Argumente (ohne Berücksichtigung der Groß- und Kleinschreibung):
Datums- oder Zeitkomponente |
Abkürzungen/Varianten |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Beispiele für Intervalle¶
Fügt zu einem bestimmten Datum ein Intervall von einem Jahr hinzu:
Fügen Sie ein Intervall von 3 Stunden und 18 Minuten zu einer bestimmten Zeit hinzu:
Fügt der Ausgabe der Funktion CURRENT_TIMESTAMP ein komplexes Intervall hinzu:
Es folgt eine Beispielausgabe. Die Ausgabe ist anders, wenn der aktuelle Zeitstempel anders ist.
Fügt ein komplexes Intervall mit verkürzter Notation für Datums-/Zeitkomponenten zu einem bestimmten Datum hinzu:
Fragt eine Tabelle mit Mitarbeiterinformationen ab und gibt die Namen von Mitarbeitern zurück, die in den letzten zwei Jahren und drei Monaten eingestellt wurden:
Filtern Sie eine Spalte TIMESTAMP mit dem Namen ts aus einer Tabelle mit dem Namen t1 und addieren Sie vier Sekunden zu jedem Rückgabewert:
Einfache Arithmetik für Datumsangaben¶
Zusätzlich zur Verwendung von Intervallkonstanten zum Addieren und Subtrahieren von Datumsangaben, Zeiten und Zeitstempeln können Sie auch Tage zu und von DATE Werten addieren und subtrahieren, und zwar in der Form von { + | - } integer, wobei integer die Anzahl der zu addierenden oder subtrahierenden Tage angibt.
Bemerkung
TIME- und TIMESTAMP-Werte unterstützen noch keine einfache Arithmetik.
Beispiele für Datumsberechnungen¶
Fügen Sie einen Tag zu einem bestimmten Datum hinzu:
Ziehen Sie vier Tage von einem bestimmten Datum ab:
Fragt eine Tabelle namens employees ab und gibt die Namen von Personen zurück, die das Unternehmen verlassen haben, aber mehr als 365 Tage im Unternehmen beschäftigt waren:
SELECT name FROM employees WHERE end_date > start_date + 365;