分享方式:


INTERVAL 類型

適用於: 檢查標示為是 Databricks SQL 檢查標示為是 Databricks Runtime

表示以秒或月數的刻度表示時間間隔。

重要

Delta Lake 不支持 INTERVAL 類型。

語法

INTERVAL { yearMonthIntervalQualifier | dayTimeIntervalQualifier }

yearMonthIntervalQualifier
 { YEAR [TO MONTH] |
   MONTH }

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

備註

涵蓋年份或月份的間隔稱為年月間隔。

涵蓋天數、小時、分鐘或秒的間隔稱為日時間間隔。

您無法合併或比較年月和日時間間隔。

日時間間隔嚴格以 86400s/day 和 60 秒/分鐘為基礎。

秒數一律視為包含微秒。

限制

年月間隔的最大範圍是 +/- 178,956,970 年和 11 月。

日時間間隔的最大範圍是 +/- 106,751,991 天、小時、 23 59 分鐘和 59.999999 秒。

常值

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:經過的年數。
  • m:經過的月數。
  • d:經過的天數。
  • h:經過的時數。
  • m:經過的分鐘數。
  • s:經過的秒數。
  • ms:經過的毫秒數。
  • us:經過的微秒數。

除非單位構成其前置單位 intervalQualifier 必須落在定義的範圍內:

  • 月:介於 0 到 11 之間
  • 小時:介於 0 到 23 之間
  • 分鐘:介於 0 到 59 之間
  • 秒:介於 0.0000000 到 59.9999999 之間

您可以在 內部或外部 intervalString加上符號前置詞。 如果有一個 - 符號,則間隔為負數。 如果有兩個或沒有 - 符號,則間隔為正數。 如果中的 intervalString 元件與錯誤中的元件不符, intervalQualifier 就會引發錯誤。 intervalString如果值不符合錯誤所指定的範圍,intervalQualifier則會引發錯誤。

範例

> 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