ClickHouse/docs/ja/sql-reference/data-types/datetime64.md
Ivan Blinkov d91c97d15d
[docs] replace underscores with hyphens (#10606)
* Replace underscores with hyphens

* remove temporary code

* fix style check

* fix collapse
2020-04-30 21:19:18 +03:00

4.8 KiB
Raw Blame History

machine_translated machine_translated_rev toc_priority toc_title
true d734a8e46d 49 DateTime64

Datetime64

定義されたサブ秒の精度で、カレンダーの日付と時刻として表現することができる時刻にインスタントを格納することができます

目盛りサイズ(精度):10-精密

構文:

DateTime64(precision, [timezone])

内部的には、データを次の数として格納します ticks エポックスタート1970-01-01 00:00:00UTCはInt64です。 目盛りの分解能は、precisionパラメーターによって決まります。 さらに、 DateTime64 タイプは、列全体で同じタイムゾーンを格納することができます。 DateTime64 型の値は、テキスト形式で表示され、文字列として指定された値がどのように解析されますか (2020-01-01 05:00:01.000). タイムゾーンはテーブルの行(またはresultset)に格納されず、列のメタデータに格納されます。 詳細はこちら DateTime.

1. テーブルの作成 DateTime64-列を入力してデータを挿入する:

CREATE TABLE dt
(
    `timestamp` DateTime64(3, 'Europe/Moscow'),
    `event_id` UInt8
)
ENGINE = TinyLog
INSERT INTO dt Values (1546300800000, 1), ('2019-01-01 00:00:00', 2)
SELECT * FROM dt
┌───────────────timestamp─┬─event_id─┐
│ 2019-01-01 03:00:00.000 │        1 │
│ 2019-01-01 00:00:00.000 │        2 │
└─────────────────────────┴──────────┘
  • Datetimeを整数として挿入すると、適切にスケーリングされたUnixタイムスタンプ(UTC)として扱われます。 1546300800000 (精度3)を表します '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 タイムゾーンとして保存 1546290000000.

2. フィルタリング DateTime64

SELECT * FROM dt WHERE timestamp = toDateTime64('2019-01-01 00:00:00', 3, 'Europe/Moscow')
┌───────────────timestamp─┬─event_id─┐
│ 2019-01-01 00:00:00.000 │        2 │
└─────────────────────────┴──────────┘

とは異なり DateTime, DateTime64 値は変換されません String 自動的に

3. Aのタイムゾーンを取得する DateTime64-タイプ値:

SELECT toDateTime64(now(), 3, 'Europe/Moscow') AS column, toTypeName(column) AS x
┌──────────────────column─┬─x──────────────────────────────┐
│ 2019-10-16 04:12:04.000 │ DateTime64(3, 'Europe/Moscow') │
└─────────────────────────┴────────────────────────────────┘

4. タイムゾーン変換

SELECT
toDateTime64(timestamp, 3, 'Europe/London') as lon_time,
toDateTime64(timestamp, 3, 'Europe/Moscow') as mos_time
FROM dt
┌───────────────lon_time──┬────────────────mos_time─┐
│ 2019-01-01 00:00:00.000 │ 2019-01-01 03:00:00.000 │
│ 2018-12-31 21:00:00.000 │ 2019-01-01 00:00:00.000 │
└─────────────────────────┴─────────────────────────┘

また見なさい