INTERVAL -Typ

Gilt für:durch Häkchen mit „Ja“ markiert Databricks SQL durch Häkchen mit „Ja“ markiert Databricks Runtime

Stellt Zeitintervalle entweder auf einer Skala von Sekunden oder Monaten dar.

Wichtig

Der Typ INTERVAL wird von Delta Lake nicht unterstützt.

Syntax

INTERVAL { yearMonthIntervalQualifier | dayTimeIntervalQualifier }

yearMonthIntervalQualifier
 { YEAR [TO MONTH] |
   MONTH }

dayTimeIntervalQualifier
 { DAY [TO { HOUR | MINUTE | SECOND } ] |
   HOUR [TO { MINUTE | SECOND } ] |
   MINUTE [TO SECOND] |
   SECOND }

Notizen

Intervalle, die Jahre oder Monate umfassen, werden als Jahr-Monat-Intervalle bezeichnet.

Intervalle, die Tage, Stunden, Minuten oder Sekunden umfassen, werden als Tag-Zeit-Intervalle bezeichnet.

Sie können Jahr-Monat- und Tag-Zeit-Intervalle nicht kombinieren oder vergleichen.

Tag-Zeit-Intervalle basieren absolut auf 86400s/Tag und 60s/min.

Mikrosekunden sind stets in Sekunden inbegriffen.

Grenzwerte

Ein Jahr-Monat-Intervall hat einen maximalen Bereich von +/- 178,956,970 Jahren und 11 Monaten.

Ein Tag-Zeit-Intervall hat einen maximalen Bereich von +/- 106,751,991 Tagen, 23 Stunden, 59 Minuten und 59.999999 Sekunden.

Literale

year-month interval
  INTERVAL [+|-] yearMonthIntervalString yearMonthIntervalQualifier

day-time interval
  INTERVAL [+|-] dayTimeIntervalString dayTimeIntervalQualifier

yearMonthIntervalString
  { '[+|-] y[...]' |
    '[+|-] y[...]-[m]m' }

dayTimeIntervalString
  { '[+|-] d[...]' |
    '[+|-] d[...] [h]h' |
    '[+|-] d[...] [h]h:[m]m' |
    '[+|-] d[...] [h]h:[m]m:[s]s' |
    '[+|-] d[...] [h]h:[m]m:[s]s.ms[ms][ms][us][us][us]' |
    '[+|-] h[...]' |
    '[+|-] h[...]:[m]m' |
    '[+|-] h[...]:[m]m:[s]s' |
    '[+|-] h[...]:[m]m:[s]s.ms[ms][ms][us][us][us]' |
    '[+|-] m[...]' |
    '[+|-] m[...]:[s]s' |
    '[+|-] m[...]:[s]s.ms[ms][ms][us][us][us]' |
    '[+|-] s[...]' |
    '[+|-] s[...].ms[ms][ms][us][us][us]' }
  • y: die verstrichene Anzahl von Jahren.
  • m: die verstrichene Anzahl von Monaten.
  • d: die verstrichene Anzahl von Tagen.
  • h: die verstrichene Anzahl von Stunden.
  • m: die verstrichene Anzahl von Minuten.
  • s: die verstrichene Anzahl von Sekunden.
  • ms: die verstrichene Anzahl von Millisekunden.
  • us: die verstrichene Anzahl von Mikrosekunden.

Sofern eine Einheit nicht die führende Einheit von intervalQualifier darstellt, muss sie innerhalb des vorgegebenen Bereichs liegen:

  • Monate: im Bereich von 0 bis 11
  • Stunden: im Bereich von 0 bis 23
  • Minuten: im Bereich von 0 bis 59
  • Sekunden: im Bereich von 0,000000 bis 59,999999

Sie können ein Vorzeichen entweder innerhalb oder außerhalb von intervalString einfügen. Beim Vorzeichen - ist das Intervall negativ. Bei zwei oder keinem Vorzeichen - ist das Intervall negativ. Wenn die Komponenten in intervalString nicht mit den Komponenten in intervalQualifier übereinstimmen, wird ein Fehler ausgelöst. Wenn der Wert von intervalString nicht in den durch intervalQualifier angegebenen Bereich passt, wird ein Fehler ausgelöst.

Beispiele

> SELECT INTERVAL '100-00' YEAR TO MONTH;
  100-0

> SELECT INTERVAL '-3600' MONTH;
  -300-0

> SELECT INTERVAL -'200:13:50.3' HOUR TO SECOND;
  -200:13:50.3

> SELECT typeof(INTERVAL -'200:13:50.3' HOUR TO SECOND);
  interval hour to second

> SELECT CAST('11 23:4:0' AS INTERVAL DAY TO SECOND);
  11 23:04:00