Перейти к основному содержимому
Перейти к основному содержимому

DateTime64

Позволяет хранить момент времени, который может быть выражен как календарная дата и время суток, с заданной точностью до субсекунды.

Размер тика (точность): 10-точность секунд. Допустимый диапазон: [ 0 : 9 ]. Обычно используется - 3 (миллисекунды), 6 (микросекунды), 9 (наносекунды).

Синтаксис:

Внутренне данные хранятся как количество 'тиков' с начала эпохи (1970-01-01 00:00:00 UTC) как Int64. Разрешение тика определяется параметром точности. Дополнительно, тип DateTime64 может хранить часовой пояс, который является одинаковым для всей колонки, что влияет на отображение значений типа DateTime64 в текстовом формате и на то, как значения, заданные в виде строк, парсятся ('2020-01-01 05:00:01.000'). Часовой пояс не хранится в строках таблицы (или в результирующем наборе), но хранится в метаданных колонки. Смотрите детали в DateTime.

Поддерживаемый диапазон значений: [1900-01-01 00:00:00, 2299-12-31 23:59:59.99999999]

Примечание: Точность максимального значения составляет 8. Если используется максимальная точность 9 цифр (наносекунды), максимальное поддерживаемое значение составляет 2262-04-11 23:47:16 в UTC.

Примеры

  1. Создание таблицы с колонкой типа DateTime64 и вставка данных в нее:
  • При вставке дату и время в виде целого числа, оно рассматривается как соответствующим образом масштабированное Unix Timestamp (UTC). 1546300800000 (с точностью 3) представляет собой '2019-01-01 00:00:00' UTC. Однако, так как в колонке timestamp указан часовой пояс Asia/Istanbul (UTC+3), при выводе в виде строки значение будет показано как '2019-01-01 03:00:00'. Вставка даты и времени в виде десятичного числа будет трактоваться аналогично целому числу, за исключением того, что значение перед десятичной точкой — это Unix Timestamp до и включая секунды, а после десятичной точки будет рассматриваться как точность.
  • При вставке строкового значения в виде даты и времени, оно рассматривается как находящееся в часовом поясе колонки. '2019-01-01 00:00:00' будет принято за находящееся в часовом поясе Asia/Istanbul и сохранено как 1546290000000.
  1. Фильтрация по значениям DateTime64

В отличие от DateTime, значения DateTime64 не конвертируются из String автоматически.

В отличие от вставки, функция toDateTime64 будет рассматривать все значения как десятичный вариант, поэтому точность должна быть указана после десятичной точки.

  1. Получение часового пояса для значения типа DateTime64:
  1. Конвертация часового пояса

Смотрите также