# Обзор

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

Типы полей даты и времени включают следующие:

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

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

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

## Сравнение источников данных

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

| **Тип поля**                   | **NocoBase**              | **MySQL**                  | **PostgreSQL**                        |
|--------------------------------|---------------------------|----------------------------|---------------------------------------|
| Дата и время (с часовым поясом) | Datetime with timezone    | TIMESTAMP<br/> DATETIME    | TIMESTAMP WITH TIME ZONE              |
| Дата и время (без часового пояса) | Datetime without timezone | DATETIME                   | TIMESTAMP WITHOUT TIME ZONE           |
| Дата (без времени)             | Date                      | DATE                       | DATE                                  |
| Время                          | Time                      | TIME                       | TIME WITHOUT TIME ZONE                |
| Метка времени Unix             | Unix timestamp            | INTEGER<br/>BIGINT         | INTEGER<br/>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](https://static-docs.nocobase.com/20240824191933.png)

**Примечание:**
- Для поддержки более широкого диапазона дат NocoBase использует тип `DATETIME` в MySQL для полей `Дата и время (с часовым поясом)`. Сохраняемое значение даты преобразуется на основе переменной среды `TZ` сервера. Это означает, что при изменении переменной среды `TZ` сохраненное значение даты и времени также изменится.
- Поскольку существует разница между UTC и местным временем, прямое отображение исходного значения UTC может ввести пользователей в заблуждение.

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

![20240824185600](https://static-docs.nocobase.com/20240824185600.png)

## UTC

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

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

| **Часовой пояс** | **Дата и время**         |
|------------------|--------------------------|
| UTC              | 2024-08-24T07:30:00.000Z |
| UTC+8            | 2024-08-24 15:30:00      |
| UTC+5            | 2024-08-24 12:30:00      |
| UTC-5            | 2024-08-24 02:30:00      |
| UTC+0            | 2024-08-24 07:30:00      |
| UTC-6            | 2024-08-23 01:30:00      |

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