Обзор

Типы полей даты и времени

Типы полей даты и времени можно разделить следующим образом:

  • Дата и время (с часовым поясом): эти значения стандартизируются в UTC (Coordinated Universal Time) и при необходимости подлежат корректировке с учетом часового пояса.
  • Дата и время (без часового пояса): этот тип хранит данные о дате и времени без учета информации о часовом поясе.
  • Дата (без времени): этот формат хранит исключительно дату, исключая компонент времени.
  • Время: хранит только информацию о времени без даты.
  • Unix-временная метка: этот тип представляет собой количество секунд, прошедших с 1 января 1970 года, и хранится как Unix-временная метка.

Ниже приведены примеры для каждого типа полей DateTime:

Тип поляПример значенияОписание
Дата и время (с часовым поясом)2024-08-24T07:30:00.000ZПреобразуется в UTC и может быть скорректировано с учетом часовых поясов
Дата и время (без часового пояса)2024-08-24 15:30:00Хранит дату и время без учета часового пояса
Дата (без времени)2024-08-24Хранит только дату, без компонентa времени
Время15:30:00Хранит только время без деталей даты
Unix-временная метка1724437800Представляет количество секунд с 1970-01-01 00:00:00 UTC

Сравнение источников данных (Data Source Comparisons)

Ниже приведена таблица сравнения для NocoBase, MySQL и PostgreSQL:

Тип поляNocoBaseMySQLPostgreSQL
Дата и время (с часовым поясом)Дата и время (с часовым поясом)TIMESTAMP
DATETIME
TIMESTAMP WITH TIME ZONE
Дата и время (без часового пояса)Дата и время (без часового пояса)DATETIMETIMESTAMP WITHOUT TIME ZONE
Дата (без времени)Дата (без времени)DATEDATE
ВремяВремяTIMETIME WITHOUT TIME ZONE
Unix-временная меткаUnix-временная меткаINTEGER
BIGINT
INTEGER
BIGINT
Время (с часовым поясом)--TIME WITH TIME ZONE

Примечание:

  • Тип TIMESTAMP в MySQL охватывает диапазон между 1970-01-01 00:00:01 UTC и 2038-01-19 03:14:07 UTC. Для дат и времен вне этого диапазона рекомендуется использовать DATETIME или BIGINT для хранения Unix-временных меток.

Рабочий процесс обработки хранения Даты и времени

С часовым поясом

Это включает Дата и время (с часовым поясом) и Unix-временная метка.

20240824191933

Примечание:

  • Для более широкого диапазона дат NocoBase использует тип DATETIME в MySQL для полей Дата и время (с часовым поясом). Значение даты, которое хранится, конвертируется на основе переменной окружения TZ сервера: значит, при изменении TZ значение Дата и время (с часовым поясом) в хранилище тоже изменится.
  • Так как разница между UTC и локальным временем приводит к смещению, непосредственный вывод «сырых» значений UTC может вызвать у пользователей путаницу.

Без часового пояса

20240824185600

UTC

UTC (Coordinated Universal Time) — глобальный стандарт времени, используемый для координации и синхронизации времени по всему миру. Это очень точный стандарт, поддерживаемый атомными часами и синхронизируемый с вращением Земли.

Разница между UTC и локальным временем может приводить к путанице при отображении «сырых» значений UTC. Например:

Часовой поясДата и время
UTC2024-08-24T07:30:00.000Z
UTC+82024-08-24 15:30:00
UTC+52024-08-24 12:30:00
UTC-52024-08-24 02:30:00
UTC+02024-08-24 07:30:00
UTC-62024-08-23 01:30:00

Все эти значения соответствуют одному и тому же моменту времени, но выражены в разных часовых поясах.