Skip to main content
時系列データを効果的に管理するには、日付・時刻型がひととおり揃っていることが不可欠です。ClickHouse は、まさにそれを提供します。 コンパクトな日付表現からナノ秒精度の高精度なタイムスタンプまで、これらの型は、ストレージ効率とさまざまな時系列アプリケーションにおける実用上の要件を両立できるよう設計されています。 過去の金融データ、IoT センサーの測定値、将来の日時が設定されたイベントなど、どのようなデータを扱う場合でも、ClickHouse の日付・時刻型は、さまざまな時間データのユースケースに対応するために必要な柔軟性を提供します。 サポートされる型の幅が広いため、ユースケースで求められる精度を維持しながら、ストレージ容量とクエリ性能の両方を最適化できます。
  • Date 型は、ほとんどの場合に十分です。この型は日付の格納に 2 バイトを使用し、範囲は [1970-01-01, 2149-06-06] に制限されます。
  • Date32 は、より広い日付範囲をカバーします。日付の格納に 4 バイトを使用し、範囲は [1900-01-01, 2299-12-31] に制限されます
  • DateTime は、date time 値を秒精度で格納し、範囲は [1970-01-01 00:00:00, 2106-02-07 06:28:15] です。値ごとに 4 バイトを使用します。
  • より高い精度が必要な場合は、DateTime64 を使用できます。これにより、最大ナノ秒精度で時刻を格納でき、範囲は [1900-01-01 00:00:00, 2299-12-31 23:59:59.99999999] です。値ごとに 8 バイトを使用します。
では、さまざまな日付型を格納するテーブルを作成してみましょう。
現在時刻を返すには now() 関数を使用できます。指定した精度で取得するには、最初の引数で精度を指定して now64() を使用します。
これにより、カラムの型に応じて各カラムに時刻が設定されます。

Time と Time64 型

日付の部分を含まない時刻の値を保存する必要がある場合、ClickHouse では Time 型と Time64 型を使用できます。これらはバージョン 25.6 で導入されました。繰り返し実行されるスケジュール、日次パターン、あるいは日付と時刻の部分を分けて扱うのが適切なケースの表現に役立ちます。
TimeTime64 を使用するには、次の設定を有効にする必要があります: SET enable_time_time64_type = 1;これらの型はバージョン 25.6 で導入されました
Time 型は、時・分・秒を秒精度で格納します。内部的には符号付き 32 ビット整数として保存され、[-999:59:59, 999:59:59] の範囲をサポートするため、24 時間を超える値も扱えます。これは、経過時間を追跡する場合や、1 日の範囲を超える値になる算術演算を行う場合に便利です。 秒未満の精度が必要な場合、Time64 は設定可能な小数秒付きの時刻を、符号付き Decimal64 値として格納します。小数点以下の桁数を定義するための精度パラメータ (0~9) を受け付けます。一般的な精度の値は、3 (ミリ秒) 、6 (マイクロ秒) 、9 (ナノ秒) です。 TimeTime64 はどちらもタイムゾーンをサポートしません。これらは、地域的な文脈を持たない純粋な時刻の値を表します。 時刻カラムを持つテーブルを作成してみましょう:
文字列リテラルまたは数値を使って時刻値を挿入できます。Time では、数値は 00:00:00 からの秒数として解釈されます。Time64 では、数値は 00:00:00 からの秒数として解釈され、小数部はカラムの精度に応じて解釈されます:
時刻の値は自然にフィルタリングできます:

タイムゾーン

多くのユースケースでは、タイムゾーンもあわせて保存する必要があります。タイムゾーンは、DateTime 型または DateTime64 型の最後の引数として設定できます。
DDLでタイムゾーンを定義したので、異なるタイムゾーンを使って時刻を挿入できるようになりました:
それでは、テーブルの中身を見てみましょう。
最初の行では、America/New_York のタイムゾーンを使用して、すべての値を挿入しました。
  • dt_1dt64_1 は、クエリ時に自動的に Europe/Berlin に変換されます。
  • dt_2dt64_2 にはタイムゾーンが指定されていなかったため、サーバーのローカルタイムゾーンが使用されます。この場合は Europe/London です。
2 行目では、タイムゾーンを指定せずにすべての値を挿入したため、サーバーのローカルタイムゾーンが使用されました。 最初の行と同様に、dt_1dt64_1Europe/Berlin に変換され、dt_2dt64_2 はサーバーのローカルタイムゾーンを使用します。

日付と時刻の関数

ClickHouse には、異なるデータ型同士を変換するための関数も用意されています。 たとえば、toDate を使って、DateTime の値を Date 型に変換できます。
toDateTime64 を使うと、DateTimeDateTime64 に変換できます。
また、toDateTime を使うと、Date または DateTime64DateTime に戻すことができます。
最終更新日 2026年7月3日