Typ: INTERVAL
Gäller för: Databricks SQL Databricks Runtime
Representerar tidsintervall antingen på en skala av sekunder eller månader.
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