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

Time64

データ型 Time64 は、時間帯を表し、小数秒を含んでいます。 カレンダーデータのコンポーネント(日、月、年)はありません。 precision パラメータは、小数点以下の桁数を定義し、したがってティックサイズを決定します。

ティックサイズ(精度): 10-precision 秒。有効範囲:0..9。一般的な選択肢は3(ミリ秒)、6(マイクロ秒)、9(ナノ秒)です。

構文:

Time64(precision)

内部では、Time64 は符号付き64ビット小数(Decimal64)形式で小数秒を格納します。 ティックの解像度は precision パラメータによって決まります。 タイムゾーンはサポートされておらず、Time64 でタイムゾーンを指定するとエラーが発生します。

DateTime64 と異なり、Time64 は日付コンポーネントを保存しません。 詳細については、Timeを参照してください。

テキスト表現の範囲: precision = 3 の場合、[-999:59:59.000, 999:59:59.999]。一般的に、最小は -999:59:59 で、最大は 999:59:59 であり、最大 precision の小数点以下の桁数(precision = 9 の場合、最小は -999:59:59.999999999)があります。

実装の詳細

表現。 符号付き Decimal64 値が小数秒をカウントし、precision 小数桁を持ちます。

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

負の値。 先頭のマイナス記号はサポートされており、保持されます。 負の値は通常、Time64 値の算術操作から生じます。 Time64 では、テキスト(例:'-01:02:03.123')および数値入力(例:-3723.123)の両方で負の入力が保持されます。

飽和。 コンポーネントに変換したり、テキストにシリアル化する際、時間帯部分は範囲 [-999:59:59.xxx, 999:59:59.xxx] に制限されます。 格納されている数値はこの範囲を超える場合がありますが、コンポーネント抽出(時間、分、秒)およびテキスト表現は飽和値を使用します。

タイムゾーンTime64 はタイムゾーンをサポートしていません。 Time64 型または値を作成する際にタイムゾーンを指定するとエラーが発生します。 同様に、Time64 カラムにタイムゾーンを適用または変更しようとするとサポートされず、エラーが発生します。

  1. Time64 型のカラムを持つテーブルを作成し、データを挿入する:
CREATE TABLE tab64
(
    `event_id` UInt8,
    `time` Time64(3)
)
ENGINE = TinyLog;
-- Parse Time64
-- - from string,
-- - from a number of seconds since 00:00:00 (fractional part according to precision).
INSERT INTO tab64 VALUES (1, '14:30:25'), (2, 52225.123), (3, '14:30:25');

SELECT * FROM tab64 ORDER BY event_id;
   ┌─event_id─┬────────time─┐
1. │        1 │ 14:30:25.000 │
2. │        2 │ 14:30:25.123 │
3. │        3 │ 14:30:25.000 │
   └──────────┴──────────────┘
  1. Time64 値でのフィルタリング
SELECT * FROM tab64 WHERE time = toTime64('14:30:25', 3);
   ┌─event_id─┬────────time─┐
1. │        1 │ 14:30:25.000 │
2. │        3 │ 14:30:25.000 │
   └──────────┴──────────────┘
SELECT * FROM tab64 WHERE time = toTime64(52225.123, 3);
   ┌─event_id─┬────────time─┐
1. │        2 │ 14:30:25.123 │
   └──────────┴──────────────┘

注: toTime64 は指定された精度に従って小数部を持つ秒として数値リテラルを解析するため、意図した小数桁を明示的に提供してください。

  1. 結果の型を確認する:
SELECT CAST('14:30:25.250' AS Time64(3)) AS column, toTypeName(column) AS type;
   ┌────────column─┬─type──────┐
1. │ 14:30:25.250 │ Time64(3) │
   └───────────────┴───────────┘

関連情報