メインコンテンツまでスキップ
メインコンテンツまでスキップ

時間

データ型 Time は、時間、分、および秒のコンポーネントを持つ時間を表します。 これは任意のカレンダー日付とは独立しており、日、月、年のコンポーネントを必要としない値に適しています。

構文:

Time

テキスト表現範囲: [-999:59:59, 999:59:59].

解像度: 1 秒.

実装の詳細

表現とパフォーマンス. データ型 Time は、内部的に秒をエンコードした符号付き32ビット整数を格納します。 Time 型と DateTime 型の値は同じバイトサイズを持ち、したがって同等のパフォーマンスを持ちます。

正規化. 文字列を Time に解析するとき、時間コンポーネントは正規化されるが、検証は行われません。 例えば、25:70:7026:11:10 と解釈されます。

負の値. 先頭のマイナス記号がサポートされ、保持されます。 負の値は通常、Time 値に対する算術演算から生じます。 Time 型については、負の入力がテキスト(例: '-01:02:03')および数値入力(例: -3723)の両方で保持されます。

飽和. 時刻コンポーネントは範囲 [-999:59:59, 999:59:59] に制限されます。 999 時間(または -999 未満)の値は、テキストとして 999:59:59 (または -999:59:59)で表現され、元に戻されます。

タイムゾーン. Time はタイムゾーンをサポートしておらず、つまり Time 値は地域的な文脈なしで解釈されます。 Time に型パラメーターとしてまたは値の作成時にタイムゾーンを指定するとエラーが発生します。 同様に、Time カラムにタイムゾーンを適用または変更しようとするとサポートされず、エラーが発生します。 Time 値は異なるタイムゾーンの下で静かに再解釈されることはありません。

1. Time 型カラムを持つテーブルを作成し、データを挿入する:

CREATE TABLE tab
(
    `event_id` UInt8,
    `time` Time
)
ENGINE = TinyLog;
-- Parse Time
-- - from string,
-- - from integer interpreted as number of seconds since 00:00:00.
INSERT INTO tab VALUES (1, '14:30:25'), (2, 52225);

SELECT * FROM tab ORDER BY event_id;
   ┌─event_id─┬──────time─┐
1. │        1 │ 14:30:25 │
2. │        2 │ 14:30:25 │
   └──────────┴───────────┘

2. Time 値でフィルタリングする

SELECT * FROM tab WHERE time = toTime('14:30:25')
   ┌─event_id─┬──────time─┐
1. │        1 │ 14:30:25 │
2. │        2 │ 14:30:25 │
   └──────────┴───────────┘

Time カラム値は、WHERE 述語内で文字列値を使用してフィルタリングできます。自動的に Time に変換されます:

SELECT * FROM tab WHERE time = '14:30:25'
   ┌─event_id─┬──────time─┐
1. │        1 │ 14:30:25 │
2. │        2 │ 14:30:25 │
   └──────────┴───────────┘

3. 結果の型を確認する:

SELECT CAST('14:30:25' AS Time) AS column, toTypeName(column) AS type
   ┌────column─┬─type─┐
1. │ 14:30:25 │ Time │
   └───────────┴──────┘

関連項目