データ型 Time64 は、小数秒を含む時刻を表します。
これには暦日の日付部分 (日、月、年) は含まれません。
precision パラメータは小数点以下の桁数を定義し、それに応じてティックサイズも決まります。
ティックサイズ (精度) : 10-precision Seconds。有効範囲: 0..9。一般的な値は 3 (ミリ秒) 、6 (マイクロ秒) 、9 (ナノ秒) です。
構文:
Time64(precision)内部的には、Time64 は秒の小数部を表す符号付き 64 ビット十進数 (Decimal64) を格納します。
ティックの分解能は precision パラメータによって決まります。
Time64 ではタイムゾーンはサポートされていません。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 です) 。
実装の詳細
表現。
小数点以下 precision 桁の秒の小数部を数える、符号付き Decimal64 値です。
正規化。
文字列を Time64 にパースする際、時刻の部分は正規化され、妥当性は検証されません。
たとえば、25:70:70 は 26:11:10 と解釈されます。
負の値。
先頭のマイナス記号はサポートされ、そのまま保持されます。
負の値は通常、Time64 値に対する算術演算によって生じます。
Time64 では、テキスト入力 (例: '-01:02:03.123') と数値入力 (例: -3723.123) の両方で、負の入力が保持されます。
飽和。 部分への変換時、またはテキストへシリアライズする際には、time-of-day の部分は [-999:59:59.xxx, 999:59:59.xxx] の範囲に制限されます。 格納される数値はこの範囲を超える場合がありますが、部分の抽出 (時、分、秒) とテキスト表現には、制限後の値が使用されます。
タイムゾーン。
Time64 はタイムゾーンをサポートしていません。
Time64 型または値の作成時にタイムゾーンを指定すると、エラーになります。
同様に、Time64 カラムにタイムゾーンを適用または変更することもサポートされておらず、エラーになります。
例
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 │ 14:30:25.000 │
│ 2 │ 14:30:25.123 │
│ 3 │ 14:30:25.000 │
└──────────┴──────────────┘Time64値によるフィルタリング
SELECT * FROM tab64 WHERE time = toTime64('14:30:25', 3);┌─event_id─┬────────time─┐
│ 1 │ 14:30:25.000 │
│ 3 │ 14:30:25.000 │
└──────────┴──────────────┘SELECT * FROM tab64 WHERE time = toTime64(52225.123, 3);┌─event_id─┬────────time─┐
│ 2 │ 14:30:25.123 │
└──────────┴──────────────┘注: toTime64 は数値リテラルを、指定した精度に応じた小数部を持つ秒数として解釈するため、意図した小数点以下の桁数を明示的に指定してください。
- 結果の型を確認します。
SELECT CAST('14:30:25.250' AS Time64(3)) AS column, toTypeName(column) AS type;┌────────column─┬─type──────┐
│ 14:30:25.250 │ Time64(3) │
└───────────────┴───────────┘Dateとの加算
Time64 の値は Date または Date32 の値に加算でき、Time64 と同じスケールを持つ DateTime64 を生成できます。
SET use_legacy_to_time = 0;
SELECT toDate('2024-07-15') + toTime64('14:30:25.123456', 6) AS dt, toTypeName(dt);┌─────────────────────────dt─┬─toTypeName(dt)─┐
│ 2024-07-15 14:30:25.123456 │ DateTime64(6) │
└────────────────────────────┴────────────────┘サポートされているすべての組み合わせと結果のデータ型の詳細については、日付と時刻の加算を参照してください。
関連項目