-
Тип
Dateбудет достаточен в большинстве случаев. Для хранения даты этот тип требует 2 байта и ограничивает диапазон значениями[1970-01-01, 2149-06-06]. -
Date32охватывает более широкий диапазон дат. Для хранения даты требуется 4 байта, а диапазон ограничен значениями[1900-01-01, 2299-12-31] -
DateTimeхранит значения дата-время с точностью до секунды и диапазоном[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
Time и Time64, добавленные в версии 25.6. Они удобны для представления повторяющихся расписаний, ежедневных шаблонов и других ситуаций, когда дату и время имеет смысл хранить отдельно.
Для использования
Time и Time64 необходимо включить настройку: SET enable_time_time64_type = 1;Эти типы были добавлены в версии 25.6Time хранит часы, минуты и секунды с точностью до секунды. Внутренне он представлен как знаковое 32-битное целое число и поддерживает диапазон [-999:59:59, 999:59:59], что позволяет использовать значения, превышающие 24 часа. Это может быть полезно при измерении прошедшего времени или выполнении арифметических операций, результат которых выходит за пределы одних суток.
Для субсекундной точности Time64 хранит время с настраиваемой дробной частью секунд как знаковое значение Decimal64. Он принимает параметр точности (0-9), который задаёт количество цифр после запятой. Наиболее распространённые значения точности: 3 (миллисекунды), 6 (микросекунды) и 9 (наносекунды).
Ни Time, ни Time64 не поддерживают часовые пояса — они представляют собой значения времени суток без привязки к региону.
Давайте создадим таблицу со столбцами времени:
Time числовые значения интерпретируются как секунды с 00:00:00. Для Time64 числовые значения интерпретируются как секунды с 00:00:00, а дробная часть — в соответствии с точностью столбца:
Часовые пояса
DateTime или DateTime64:
America/New_York.
dt_1иdt64_1автоматически преобразуются вEurope/Berlinво время выполнения запроса.- Для
dt_2иdt64_2часовой пояс не был указан, поэтому используется локальный часовой пояс сервера — в данном случае этоEurope/London.
dt_1 и dt64_1 преобразуются в Europe/Berlin, а dt_2 и dt64_2 используют локальный часовой пояс сервера.
Функции даты и времени
toDate, чтобы преобразовать значение DateTime в тип Date:
toDateTime64, чтобы преобразовать DateTime в DateTime64:
toDateTime, чтобы преобразовать Date или DateTime64 обратно в DateTime: