INTERVAL type

Berlaku untuk:centang ditandai ya Databricks SQL centang ditandai ya Databricks Runtime

Mewakili interval waktu baik pada skala detik atau bulan.

Penting

Delta Lake tidak mendukung jenis tersebut INTERVAL .

Sintaks

INTERVAL { yearMonthIntervalQualifier | dayTimeIntervalQualifier }

yearMonthIntervalQualifier
 { YEAR [TO MONTH] |
   MONTH }

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

Catatan

Interval yang mencakup tahun atau bulan disebut interval bulan-tahun.

Interval yang mencakup hari, jam, menit, atau detik disebut interval waktu hari.

Anda tidak dapat menggabungkan atau membandingkan interval tahun-bulan dan waktu hari.

Interval waktu hari secara ketat didasarkan pada 86400 dtk/hari dan 60 dtk/menit.

Detik selalu dianggap termasuk mikrodetik.

Batas

Interval bulan memiliki rentang maksimal +/- 178,956,970 tahun dan 11 bulan.

Interval waktu hari memiliki rentang maksimal +/- 106,751,991 hari, 23 jam, 59 menit, dan 59.999999 detik.

Harfiah

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: Jumlah tahun yang berlalu.
  • m: Jumlah bulan yang berlalu.
  • d: Jumlah hari yang berlalu.
  • h: Jumlah jam yang berlalu.
  • m: Jumlah menit yang berlalu.
  • s: Jumlah detik yang berlalu.
  • ms: Jumlah milidetik yang berlalu.
  • us: Jumlah mikrodetik yang berlalu.

Kecuali unit merupakan unit utama dari intervalQualifier harus jatuh dalam kisaran yang ditentukan:

  • Bulan: antara 0 dan 11
  • Jam: antara 0 dan 23
  • Menit: antara 0 dan 59
  • Detik: antara 0,000000 detik dan 59,999999

Anda dapat awalan tanda baik di dalam atau di luar intervalString. Jika ada satu tanda -, intervalnya negatif. Jika ada dua atau tanpa tanda -, intervalnya positif. Jika komponen dalam intervalString tidak cocok dengan komponen dalam intervalQualifier kesalahan dinaikkan. Jika nilai intervalString tidak sesuai dengan rentang yang ditentukan oleh intervalQualifier, kesalahan dinaikkan.

Contoh

> 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