Condividi tramite


Tipo diINTERVAL

Si applica a: segno di spunta sì Databricks SQL segno di spunta sì Databricks Runtime

Rappresenta gli intervalli di tempo su una scala di secondi o mesi.

Importante

Delta Lake non supporta il INTERVAL tipo.

Sintassi

INTERVAL { yearMonthIntervalQualifier | dayTimeIntervalQualifier }

yearMonthIntervalQualifier
 { YEAR [TO MONTH] |
   MONTH }

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

Note

Gli intervalli che coprono anni o mesi sono denominati intervalli di mesi di anno.

Gli intervalli che coprono giorni, ore, minuti o secondi sono denominati intervalli di tempo di giorno.

Non è possibile combinare o confrontare intervalli di anno e mese e giorno.

Gli intervalli di giorno sono rigorosamente basati su 86400s/giorno e 60s/min.

I secondi vengono sempre considerati come microsecondi.

Limiti

Un intervallo di mesi di anno ha un intervallo massimo di +/- 178,956,970 anni e 11 mesi.

Un intervallo di tempo di giorno ha un intervallo massimo di +/- 106,751,991 giorni, 23 ore, 59 minuti e 59.999999 secondi.

Valori letterali

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: numero di anni trascorso.
  • m: numero di mesi trascorso.
  • d: numero di giorni trascorso.
  • h: numero di ore trascorso.
  • m: numero di minuti trascorso.
  • s: numero trascorso di secondi.
  • ms: numero trascorso di millisecondi.
  • us: numero trascorso di microsecondi.

A meno che un'unità non rappresenti l'unità iniziale dell'oggetto intervalQualifier deve rientrare nell'intervallo definito:

  • Mesi: compreso tra 0 e 11
  • Ore: compreso tra 0 e 23
  • Minuti: compreso tra 0 e 59
  • Secondi: compreso tra 0,000000 e 59,99999999

È possibile anteporre un segno all'interno o all'esterno intervalStringdi . Se è presente un - segno, l'intervallo è negativo. Se sono presenti due o nessun - segno, l'intervallo è positivo. Se i componenti in intervalString non corrispondono ai componenti in intervalQualifier viene generato un errore. Se il intervalString valore non rientra nell'intervallo specificato dall'errore intervalQualifier viene generato.

Esempi

> 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