Time64 データ型は、サブ秒精度で時間値を格納することを可能にします。DateTime64 とは異なり、カレンダー日付は含まれず、時間のみを表します。精度は、格納された値の小数秒単位の解像度を定義します。
ティックサイズ(精度):10-precision 秒。有効範囲:[ 0 : 9 ]。
通常は 3 (ミリ秒)、6 (マイクロ秒)、9 (ナノ秒) が使用されます。
構文:
内部的に、Time64 は日付の開始からのティックの Int64 数値としてデータを格納します (000:00:00.000000000)。ティック解像度は精度パラメータによって決まります。オプションで、列レベルでタイムゾーンを指定することもでき、これは時間値の解釈とテキスト形式での表示に影響を与えます。
DateTime64 とは異なり、Time64 は日付コンポーネントを格納しないため、時間のみを表します。詳細は Time を参照してください。
サポートされている値の範囲: [000:00:00, 999:59:59.99999999]
Time64
型カラムを持つテーブルを作成し、データを挿入する:
CREATE TABLE t64
(
`timestamp` Time64(3),
`event_id` UInt8
)
ENGINE = TinyLog;
-- 時間を解析する
-- - 1970-01-01 からの秒数として解釈される整数から。
-- - 文字列から、
INSERT INTO t64 VALUES (15463123, 1), (154600.123, 2), ('100:00:00', 3);
SELECT * FROM t64;
┌─────timestamp─┬─event_id─┐
1. │ 004:17:43.123 │ 1 │
2. │ 042:56:40.123 │ 2 │
3. │ 100:00:00.000 │ 3 │
└───────────────┴──────────┘
Time64
値でフィルター処理する
SELECT * FROM t64 WHERE timestamp = toTime64('100:00:00', 3);
┌─────timestamp─┬─event_id─┐
1. │ 100:00:00.000 │ 3 │
└───────────────┴──────────┘
Time
と異なり、Time64
値は自動的に String
から変換されません。
SELECT * FROM t64 WHERE timestamp = toTime64(154600.123, 3);
┌─────timestamp─┬─event_id─┐
1. │ 042:56:40.123 │ 2 │
└───────────────┴──────────┘
挿入時とは異なり、toTime64
関数はすべての値を10進数版として扱うため、小数点の後に精度を指定する必要があります。
Time64
型値のタイムゾーンを取得する:
SELECT toTime64(now(), 3) AS column, toTypeName(column) AS x;
┌────────column─┬─x─────────┐
1. │ 019:14:16.000 │ Time64(3) │
└───────────────┴───────────┘
参照