Datetime64 

Tanımlanmış alt saniye hassasiyetle, bir takvim tarihi ve bir günün saati olarak ifade edilebilir, zaman içinde bir anlık saklamak için izin verir

Kene boyutu (hassas): 10-hassaslık ikincilikler

Sözdizimi:

DateTime64(precision, [timezone])

DAHİLİ olarak, verileri bir dizi olarak saklar ‘ticks’ epoch başlangıçtan beri (1970-01-01 00:00:00 UTC) Int64 olarak. Kene çözünürlüğü hassasiyet parametresi tarafından belirlenir. Ayrıca, DateTime64 tür, tüm sütun için aynı olan saat dilimini depolayabilir, bu da DateTime64 tür değerleri metin biçiminde görüntülenir ve dizeler olarak belirtilen değerlerin nasıl ayrıştırılır (‘2020-01-01 05:00:01.000’). Saat dilimi tablo (veya resultset) satırlarında depolanır, ancak sütun meta verileri depolanır. Ayrıntıları görün DateTime.

Örnekler 

1. İle bir tablo oluşturma DateTime64- sütun yazın ve içine veri ekleme:

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 │
└─────────────────────────┴──────────┘
  • Bir tamsayı olarak datetime eklerken, uygun şekilde ölçeklendirilmiş bir Unıx Zaman Damgası (UTC) olarak kabul edilir. 1546300800000 (hassas 3 ile) temsil eder '2019-01-01 00:00:00' UTC. Ancak, timestamp sütun vardır Europe/Moscow (UTC+3) belirtilen zaman dilimi, bir dize olarak çıkış yaparken değer olarak gösterilir '2019-01-01 03:00:00'
  • Dize değerini datetime olarak eklerken, sütun saat diliminde olduğu kabul edilir. '2019-01-01 00:00:00' will gibi muamele Europe/Moscow saat dilimi ve olarak saklanır 1546290000000.

2. Üzerinde filtreleme DateTime64 değerler

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 │
└─────────────────────────┴──────────┘

Aksine DateTime, DateTime64 değerler dönüştürülmez String otomatik olarak

3. Bir saat dilimi almak DateTime64- tip değeri:

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. Zaman dilimi dönüştürme

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 │
└─────────────────────────┴─────────────────────────┘

Ayrıca Bakınız 

Rating: 2.1 - 13 votes

Was this content helpful?
★★☆☆☆