Dela via


Typ: INTERVAL

Gäller för:markerad ja Databricks SQL markerad ja Databricks Runtime

Representerar tidsintervall antingen på en skala av sekunder eller månader.

Viktigt!

Delta Lake stöder INTERVAL inte typen.

Syntax

INTERVAL { yearMonthIntervalQualifier | dayTimeIntervalQualifier }

yearMonthIntervalQualifier
 { YEAR [TO MONTH] |
   MONTH }

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

Kommentar

Intervall som täcker år eller månader kallas årsmånadsintervall.

Intervall som täcker dagar, timmar, minuter eller sekunder kallas dagtidsintervall.

Du kan inte kombinera eller jämföra års- och dagtidsintervall.

Dagsintervall baseras strikt på 86400-talet/dag och 60-talet/min.

Sekunder anses alltid innehålla mikrosekunder.

Gränser

Ett årsmånadsintervall har ett maximalt intervall på +/- 178,956,970 år och 11 månader.

Ett dagsintervall har ett maximalt intervall på +/- 106,751,991 dagar, 23 timmar, 59 minuter och 59.999999 sekunder.

Literaler

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: Det förflutna antalet år.
  • m: Det förflutna antalet månader.
  • d: Det förflutna antalet dagar.
  • h: Det förflutna antalet timmar.
  • m: Det förflutna antalet minuter.
  • s: Det förflutna antalet sekunder.
  • ms: Det förflutna antalet millisekunder.
  • us: Det förflutna antalet mikrosekunder.

Såvida inte en enhet utgör den ledande enheten av den intervalQualifier måste ligga inom det definierade intervallet:

  • Månader: mellan 0 och 11
  • Timmar: mellan 0 och 23
  • Minuter: mellan 0 och 59
  • Sekunder: mellan 0,0000000 och 59,9999999

Du kan prefixa en skylt antingen inuti eller utanför intervalString. Om det finns ett - tecken är intervallet negativt. Om det finns två eller inga - tecken är intervallet positivt. Om komponenterna i intervalString inte matchar komponenterna i intervalQualifier ett fel utlöses. Om värdet intervalString inte passar in i det intervall som anges av intervalQualifier ett fel utlöses.

Exempel

> 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