TIME 型

適用対象:はい Databricks SQL チェックが Databricks Runtime 18 LTS 以上" とマークされているチェック

Note

Databricks Runtime 18 は、Databricks Runtime 18.0、18.1、および 18.2 より新しいです。 以前に後の番号付きバージョンとして出荷されていた機能は、代わりに Databricks Runtime 18 の日付の更新プログラムとして出荷されるようになりました。 詳細については、「 統合リリース ノートについて」を参照してください。

Important

この機能は ベータ版です。

タイム ゾーンのない時間、分、秒のフィールドの値で構成される時刻を表します。

Syntax

TIME | TIME(p)

p: 秒フィールドの小数部の桁数を指定する省略可能な有効桁数。 有効な値は0から6までです。 pを省略すると、既定の有効桁数は 6 (マイクロ秒) になります。

Limits

サポートされている時間値の範囲は、00:00:00.000000に23:59:59.999999。

リテラル

TIME timeString

timeString
{ '[h]h:[m]m' |
  '[h]h:[m]m:[s]s' |
  '[h]h:[m]m:[s]s.[f...]' |
  '[h]h:[m]m AM|PM' |
  '[h]h:[m]m:[s]s AM|PM' |
  '[h]h:[m]m:[s]s.[f...] AM|PM' }
  • [h]h: 00 と 23 (24 時間形式) の間、または 01 と 12 ( AM/PM を使用した 12 時間形式) の間の 1 桁または 2 桁の時間。
  • [m]m: 00 と 59の間の 1 または 2 桁の分。
  • [s]s: 00 と 59の間の 1 つまたは 2 桁の秒。
  • [f...]: 秒の小数部の最大 6 桁の数字。
  • AM または PM: 12 時間のクロック値を示す省略可能な大文字と小文字を区別しないサフィックス。

プレフィックス TIME では、大文字と小文字が区別されません。

2 番目のコンポーネントが指定されていない場合は、既定で 0されます。

リテラルが適切な時間を表していない場合Azure Databricksエラーが発生します。

有効桁数ルール

有効桁数が異なる 2 つの TIME 値を組み合わせた場合 ( COALESCE、 CASE、 UNION、算術など)、結果では 2 つの有効桁数のうち、より広い方が使用されます。

たとえば、最も一般的でない種類の TIME(3) と TIME(6) は TIME(6)。

TIME値を低い精度にキャストすると、秒の小数部は切り捨てられ、丸めされません。

> SELECT CAST(TIME'12:30:45.987654' AS TIME(3));
  12:30:45.987

TIMEに対して日単位の間隔を加算または減算すると、結果はTIMEの有効桁数の広さと、間隔の秒の小数部の有効桁数を使用します。 たとえば、TIME(0) + INTERVAL '1.123456' SECOND では TIME(6) が返されます。 結果が [00:00:00, 24:00:00) 外にある場合、Azure Databricksは DATETIME_OVERFLOW を発生させます。

注記

TIME値に対するすべての操作は、タイム ゾーンを考慮せずに実行されます。

Delta Lake テーブルで TIME 列を使用するには、 TIME 型の列を持つ新しい Delta テーブルを作成すると、サポートが自動的に有効になります。 既存のテーブルに TIME 列を追加するには、まずこの機能を有効にする必要があります。

ALTER TABLE table_name SET TBLPROPERTIES ('delta.feature.timeType' = 'supported')

TIME型には、次の制限があります。

  • 生成された列ではサポートされていません。
  • ブルーム フィルター インデックスではサポートされていません。
  • Z オーダーではサポートされていません。

例示

> SELECT TIME'10:30:00';
  10:30:00

> SELECT TIME'08:15';
  08:15:00

> SELECT TIME'23:59:59.123456';
  23:59:59.123456

> SELECT CAST('14:30:00' AS TIME);
  14:30:00

> SELECT CAST('09:15:30.5' AS TIME(3));
  09:15:30.500

> SELECT current_time();
  16:57:04.304361

> SELECT make_time(6, 30, 45.887);
  06:30:45.887000