Typ INTERVAL

Platí pro:zaškrtnutí označeného ano Databricks SQL zaškrtnutí označeného ano Databricks Runtime

Představuje časové intervaly v rozsahu sekund nebo měsíců.

Důležité

Delta Lake nepodporuje INTERVAL typ.

Syntaxe

INTERVAL { yearMonthIntervalQualifier | dayTimeIntervalQualifier }

yearMonthIntervalQualifier
 { YEAR [TO MONTH] |
   MONTH }

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

Notes

Intervaly zahrnující roky nebo měsíce se označují jako intervaly mezi rokem.

Intervaly zahrnující dny, hodiny, minuty nebo sekundy se nazývají denní intervaly.

Nemůžete kombinovat ani porovnávat roční a denní intervaly.

Denní intervaly jsou výhradně založené na 86400s/den a 60s/min.

Sekundy se vždy považují za mikrosekundy.

Omezení

Interval roku má maximální rozsah +/- 178,956,970 let a 11 měsíců.

Denní interval má maximální rozsah +/- 106,751,991 dnů, 23 hodin, 59 minut a 59.999999 sekund.

Literály

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: Uplynulý počet let.
  • m: Uplynulý počet měsíců.
  • d: Uplynulý počet dní.
  • h: Uplynulý počet hodin.
  • m: Uplynulý počet minut.
  • s: Uplynulý počet sekund.
  • ms: Uplynulý počet milisekund.
  • us: Uplynulý počet mikrosekund.

Pokud jednotka nepředstavuje úvodní jednotku intervalQualifier , musí spadat do definovaného rozsahu:

  • Měsíce: mezi 0 a 11
  • Hodiny: mezi 0 a 23
  • Minuty: 0 až 59
  • Sekundy: mezi 0,000000 a 59,9999999

Můžete předponovat znaménko uvnitř nebo venku intervalString. Pokud existuje jedno - znaménko, interval je záporný. Pokud existují dva nebo žádné - znaménka, interval je kladný. Pokud se komponenty v objektu intervalString neshodují se součástmi v chybě, dojde k intervalQualifier chybě. Pokud se intervalString hodnota nevejde do rozsahu určeného intervalQualifier chybou.

Příklady

> 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