6.5 KiB
machine_translated | machine_translated_rev | toc_priority | toc_title |
---|---|---|---|
true | d734a8e46d |
48 | DateTime |
Datetime
カレンダーの日付と時刻として表現することができ、時間内にインスタントを格納することができます。
構文:
DateTime([timezone])
サポートされる値の範囲: [1970-01-01 00:00:00, 2105-12-31 23:59:59].
解像度:1秒。
使用上の注意
のとして保存すると、 Unix timestamp タイムゾーンまたは夏時間に関係なく。 さらに、 DateTime
タイプは、列全体で同じタイムゾーンを格納することができます。 DateTime
型の値は、テキスト形式で表示され、文字列として指定された値がどのように解析されますか (‘2020-01-01 05:00:01’). タイムゾーンはテーブルの行(またはresultset)に格納されず、列のメタデータに格納されます。
リストの対応時間帯の IANA時間帯のデータベース.
その tzdata
パッケージ、含む IANA時間帯のデータベース、システムに取付けられているべきです。 を使用 timedatectl list-timezones
ローカルシステ
タイムゾーンを明示的に設定することができます DateTime
-テーブルを作成するときに列を入力します。 タイムゾーンが設定されていない場合、ClickHouseはタイムゾーンの値を使用します。 タイムゾーン クリックハウスサーバーの起動時にサーバー設定またはオペレーティングシステム設定のパラメータ。
その クリックハウス-顧客 データ型の初期化時にタイムゾーンが明示的に設定されていない場合は、既定でサーバーのタイムゾーンを適用します。 クライアントのタイムゾーンを使用するには clickhouse-client
と --use_client_time_zone
パラメータ。
ClickHouse出力値で YYYY-MM-DD hh:mm:ss
デフォルトではテキスト形式。 出力を変更するには、次のようにします formatDateTime 機能。
ClickHouseにデータを挿入するときは、日付と時刻の文字列の異なる形式を使用することができます。 date_time_input_format 設定。
例
1. テーブルを作成する DateTime
-列を入力してデータを挿入する:
CREATE TABLE dt
(
`timestamp` DateTime('Europe/Moscow'),
`event_id` UInt8
)
ENGINE = TinyLog;
INSERT INTO dt Values (1546300800, 1), ('2019-01-01 00:00:00', 2);
SELECT * FROM dt;
┌───────────timestamp─┬─event_id─┐
│ 2019-01-01 03:00:00 │ 1 │
│ 2019-01-01 00:00:00 │ 2 │
└─────────────────────┴──────────┘
- Datetimeを整数として挿入すると、Unixタイムスタンプ(UTC)として扱われます。
1546300800
を表します'2019-01-01 00:00:00'
UTC。 しかし、としてtimestamp
列はEurope/Moscow
(UTC+3)タイムゾーン指定、文字列として出力すると、値は次のように表示されます'2019-01-01 03:00:00'
- 文字列値をdatetimeとして挿入すると、列timezoneにあるものとして扱われます。
'2019-01-01 00:00:00'
するものとして扱われるEurope/Moscow
タイムゾーンとして保存1546290000
.
2. フィルタリング DateTime
値
SELECT * FROM dt WHERE timestamp = toDateTime('2019-01-01 00:00:00', 'Europe/Moscow')
┌───────────timestamp─┬─event_id─┐
│ 2019-01-01 00:00:00 │ 2 │
└─────────────────────┴──────────┘
DateTime
列の値は、文字列値を使用してフィルター処理できます。 WHERE
述語。 それはに変換されます DateTime
自動的に:
SELECT * FROM dt WHERE timestamp = '2019-01-01 00:00:00'
┌───────────timestamp─┬─event_id─┐
│ 2019-01-01 03:00:00 │ 1 │
└─────────────────────┴──────────┘
3. Aのタイムゾーンを取得する DateTime
-タイプ列:
SELECT toDateTime(now(), 'Europe/Moscow') AS column, toTypeName(column) AS x
┌──────────────column─┬─x─────────────────────────┐
│ 2019-10-16 04:12:04 │ DateTime('Europe/Moscow') │
└─────────────────────┴───────────────────────────┘
4. タイムゾーン変換
SELECT
toDateTime(timestamp, 'Europe/London') as lon_time,
toDateTime(timestamp, 'Europe/Moscow') as mos_time
FROM dt
┌───────────lon_time──┬────────────mos_time─┐
│ 2019-01-01 00:00:00 │ 2019-01-01 03:00:00 │
│ 2018-12-31 21:00:00 │ 2019-01-01 00:00:00 │
└─────────────────────┴─────────────────────┘