Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Intervalldatentypen und -literale
Sie können einen Intervalldatentyp verwenden, um Zeitdauern in Einheiten wie seconds, minutes, hours, days, months und years zu speichern. Intervalldatentypen und -literale können in Berechnungen von Datum und Uhrzeit verwendet werden, beispielsweise beim Hinzufügen von Intervallen zu Datumsangaben und Zeitstempeln, beim Summieren von Intervallen und beim Subtrahieren eines Intervalls von einem Datum oder Zeitstempel. Intervallliterale können als Eingabewerte für Spalten des Intervalldatentyps in einer Tabelle verwendet werden.
Syntax des Intervalldatentyps
So geben Sie einen Intervalldatentyp zum Speichern einer Zeitdauer in Jahren und Monaten an:
INTERVAL year_to_month_qualifier
So geben Sie einen Intervalldatentyp zum Speichern einer Zeitdauer in Tagen, Stunden, Minuten und Sekunden an:
INTERVAL day_to_second_qualifier [ (fractional_precision) ]
Syntax des Intervallliterals
So geben Sie ein Intervallliteral zum Festlegen einer Zeitdauer in Jahren und Monaten an:
INTERVAL quoted-string year_to_month_qualifier
So geben Sie ein Intervallliteral zum Festlegen einer Zeitdauer in Tagen, Stunden, Minuten und Sekunden an:
INTERVAL quoted-string day_to_second_qualifier [ (fractional_precision) ]
Argumente
- quoted-string
-
Gibt einen positiven oder negativen numerischen Wert an, der eine Menge und die Datums-/Uhrzeiteinheit als Eingabezeichenfolge angibt. Wenn die Zeichenfolge in Anführungszeichen nur eine Zahl enthält, werden die Einheiten anhand von year_to_month_qualifier oder AWS Clean Rooms day_to_second_qualifier bestimmt.
'23' MONTHbeispielsweise steht für1 year 11 months,'-2' DAYfür-2 days 0 hours 0 minutes 0.0 seconds,'1-2' MONTHfür1 year 2 monthsund'13 day 1 hour 1 minute 1.123 seconds' SECONDfür13 days 1 hour 1 minute 1.123 seconds. Weitere Informationen zu Ausgabeformaten eines Intervalls finden Sie unter Intervallstile. - year_to_month_qualifier
-
Gibt den Bereich des Intervalls an. Wenn Sie einen Qualifier verwenden und ein Intervall mit Zeiteinheiten erstellen, die kleiner als der Qualifier sind, werden die kleineren Teile des Intervalls gekürzt und verworfen. AWS Clean Rooms Gültige Werte für year_to_month_qualifier sind:
-
YEAR -
MONTH -
YEAR TO MONTH
-
- day_to_second_qualifier
-
Gibt den Bereich des Intervalls an. Wenn Sie einen Qualifier verwenden und ein Intervall mit Zeiteinheiten erstellen, die kleiner als der Qualifier sind, werden die kleineren Teile des Intervalls AWS Clean Rooms gekürzt und verworfen. Gültige Werte für day_to_second_qualifier sind:
-
DAY -
HOUR -
MINUTE -
SECOND -
DAY TO HOUR -
DAY TO MINUTE -
DAY TO SECOND -
HOUR TO MINUTE -
HOUR TO SECOND -
MINUTE TO SECOND
Die Ausgabe des INTERVAL-Literals wird auf die kleinste angegebene INTERVAL-Komponente gekürzt. Wenn Sie beispielsweise einen MINUTE-Qualifier verwenden, werden die Zeiteinheiten, die kleiner als MINUTE sind, AWS Clean Rooms verworfen.
select INTERVAL '1 day 1 hour 1 minute 1.123 seconds' MINUTEDer resultierende Wert wird auf
'1 day 01:01:00'gekürzt. -
- fractional_precision
-
Optionaler Parameter, der die zulässige Anzahl an Nachkommastellen im Intervall angibt. Das Argument fractional_precision sollte nur angegeben werden, wenn Ihr Intervall SECOND enthält.
SECOND(3)erzeugt beispielsweise ein Intervall, das nur drei Nachkommastellen erlaubt, z. B. 1,234 Sekunden. Die maximale Anzahl von Nachkommastellen ist sechs.
Die Sitzungskonfiguration interval_forbid_composite_literals bestimmt, ob ein Fehler zurückgegeben wird, wenn ein Intervall mit den Teilen YEAR TO MONTH und DAY TO SECOND angegeben wird.
Intervallarithmetik
Sie können Intervallwerte zusammen mit anderen Datums-/Uhrzeitwerten verwenden, um arithmetische Operationen durchzuführen. In den folgenden Tabellen werden die verfügbaren Operationen und die aus den einzelnen Optionen resultierenden Datentypen beschrieben.
Anmerkung
Operationen, die sowohl date- als auch timestamp-Ergebnisse liefern können, tun dies basierend auf der kleinsten Zeiteinheit, die in der Gleichung enthalten ist. Wenn Sie beispielsweise ein interval zu einem date hinzufügen, ist das Ergebnis ein date, wenn es sich um ein YEAR TO MONTH-Intervall handelt, und ein Zeitstempel bei einem DAY TO SECOND-Intervall.
Operationen, bei denen der erste Operand ein interval ist, führen zu den folgenden Ergebnissen für den angegebenen zweiten Operanden:
| Operator | Date | Zeitstempel | Intervall | Numerischer Wert |
|---|---|---|---|---|
| - | – | – | Intervall | – |
| + | Date | Datum/Zeitstempel | Intervall | – |
| * | – | – | – | Intervall |
| / | – | – | – | Intervall |
Operationen, bei denen der erste Operand ein date ist, führen zu den folgenden Ergebnissen für den angegebenen zweiten Operanden:
| Operator | Date | Zeitstempel | Intervall | Numerischer Wert |
|---|---|---|---|---|
| - | Numerischer Wert | Intervall | Datum/Zeitstempel | Date |
| + | – | – | – | – |
Operationen, bei denen der erste Operand ein timestamp ist, führen zu den folgenden Ergebnissen für den angegebenen zweiten Operanden:
| Operator | Date | Zeitstempel | Intervall | Numerischer Wert |
|---|---|---|---|---|
| - | Numerischer Wert | Intervall | Zeitstempel | Zeitstempel |
| + | – | – | – | – |
Intervallstile
-
postgres– folgt dem PostgreSQL-Stil. Dies ist die Standardeinstellung. -
postgres_verbose– folgt dem ausführlichen PostgreSQL-Stil. -
sql_standard– folgt dem SQL-Standardstil für Intervallliterale.
Der folgende Befehl legt für den Intervallstil sql_standard fest.
SET IntervalStyle to 'sql_standard';
postgres-Ausgabeformat
Im Folgenden sehen Sie das Ausgabeformat für den postgres-Intervallstil. Jeder numerische Wert kann negativ sein.
'<numeric> <unit> [, <numeric> <unit> ...]'
select INTERVAL '1-2' YEAR TO MONTH::textvarchar --------------- 1 year 2 mons
select INTERVAL '1 2:3:4.5678' DAY TO SECOND::textvarchar ------------------ 1 day 02:03:04.5678
postgres_verbose-Ausgabeformat
Die postgres_verbose-Syntax ähnelt der postgres-Syntax, die Ausgaben von postgres_verbose enthalten jedoch auch die Zeiteinheit.
'[@] <numeric> <unit> [, <numeric> <unit> ...] [direction]'
select INTERVAL '1-2' YEAR TO MONTH::textvarchar ----------------- @ 1 year 2 mons
select INTERVAL '1 2:3:4.5678' DAY TO SECOND::textvarchar --------------------------- @ 1 day 2 hours 3 mins 4.56 secs
sql_standard-Ausgabeformat
Die Werte für Intervalle vom Typ „Year to month“ werden wie folgt formatiert. Bei Angabe eines negativen Vorzeichens vor dem Intervall hat das Intervall einen negativen Wert. Das Vorzeichen gilt für das gesamte Intervall.
'[-]yy-mm'
Die Werte für Intervalle vom Typ „Day to second“ werden wie folgt formatiert.
'[-]dd hh:mm:ss.ffffff'
SELECT INTERVAL '1-2' YEAR TO MONTH::textvarchar ------- 1-2
select INTERVAL '1 2:3:4.5678' DAY TO SECOND::textvarchar --------------- 1 2:03:04.5678
Beispiele für den Intervalldatentyp
Die folgenden Beispiele zeigen, wie INTERVAL-Datentypen mit Tabellen verwendet werden.
create table sample_intervals (y2m interval month, h2m interval hour to minute); insert into sample_intervals values (interval '20' month, interval '2 days 1:1:1.123456' day to second); select y2m::text, h2m::text from sample_intervals;y2m | h2m ---------------+----------------- 1 year 8 mons | 2 days 01:01:00
update sample_intervals set y2m = interval '2' year where y2m = interval '1-8' year to month; select * from sample_intervals;y2m | h2m ---------+----------------- 2 years | 2 days 01:01:00
delete from sample_intervals where h2m = interval '2 1:1:0' day to second; select * from sample_intervals;y2m | h2m -----+-----
Beispiele für Intervallliterale
Die folgenden Beispiele werden mit dem Intervallstil postgres ausgeführt.
Das folgende Beispiel zeigt, wie ein INTERVAL-Literal von einem Jahr erstellt wird.
select INTERVAL '1' YEARintervaly2m --------------- 1 years 0 mons
Wenn Sie eine quoted-string angeben, die den Qualifier überschreitet, werden die verbleibenden Zeiteinheiten aus dem Intervall gekürzt. Im folgenden Beispiel wird aus einem Intervall von 13 Monaten 1 Jahr und 1 Monat, doch der verbleibende Monat wird aufgrund des Qualifiers YEAR weggelassen.
select INTERVAL '13 months' YEARintervaly2m --------------- 1 years 0 mons
Wenn Sie einen Qualifier verwenden, der kleiner als Ihre Intervallzeichenfolge ist, werden die verbleibenden Einheiten eingeschlossen.
select INTERVAL '13 months' MONTHintervaly2m --------------- 1 years 1 mons
Wenn Sie eine Genauigkeit in Ihrem Intervall angeben, wird die Anzahl der Nachkommastellen auf die angegebene Genauigkeit gekürzt.
select INTERVAL '1.234567' SECOND (3)intervald2s -------------------------------- 0 days 0 hours 0 mins 1.235 secs
Wenn Sie keine Genauigkeit angeben, AWS Clean Rooms wird die maximale Genauigkeit von 6 verwendet.
select INTERVAL '1.23456789' SECONDintervald2s ----------------------------------- 0 days 0 hours 0 mins 1.234567 secs
Das folgende Beispiel zeigt, wie ein Bereichsintervall erstellt wird.
select INTERVAL '2:2' MINUTE TO SECONDintervald2s ------------------------------ 0 days 0 hours 2 mins 2.0 secs
Qualifier bestimmen die Einheiten, die Sie angeben. Das folgende Beispiel verwendet zwar dieselbe Zeichenfolge in Anführungszeichen von '2:2' wie im vorherigen Beispiel, AWS Clean Rooms erkennt jedoch, dass aufgrund des Qualifizierers unterschiedliche Zeiteinheiten verwendet werden.
select INTERVAL '2:2' HOUR TO MINUTEintervald2s ------------------------------ 0 days 2 hours 2 mins 0.0 secs
Abkürzungen und Pluralformen der einzelnen Einheiten werden ebenfalls unterstützt. So sind beispielsweise 5s, 5 second und 5 seconds äquivalente Intervalle. Unterstützte Einheiten sind Jahre, Monate, Stunden, Minuten und Sekunden.
select INTERVAL '5s' SECONDintervald2s ------------------------------ 0 days 0 hours 0 mins 5.0 secs
select INTERVAL '5 HOURS' HOURintervald2s ------------------------------ 0 days 5 hours 0 mins 0.0 secs
select INTERVAL '5 h' HOURintervald2s ------------------------------ 0 days 5 hours 0 mins 0.0 secs