Последнее обновление
MILLISECOND_TIMESTAMP
Описание
Функция MILLISECOND_TIMESTAMP преобразует входное значение даты и времени в метку времени Unix, отсчитываемую от 1970-01-01 00:00:00 (с учетом смещения местного часового пояса), в миллисекундах (1 секунда = 1,000 миллисекунд). Функция поддерживает обработку значений типа DATETIME с точностью до миллисекунд и при преобразовании автоматически игнорирует различия часовых поясов (по умолчанию используя время UTC в качестве точки отсчета).
Синтаксис
MILLISECOND_TIMESTAMP(`<datetime>`)
Параметры
| Параметр | Описание |
|---|---|
<datetime> | Дата и время для преобразования в метку времени Unix. Поддерживается тип DATETIME. Подробнее о форматах даты и времени см. в разделе Преобразование даты и времени. |
Возвращаемое значение
Возвращает целое число типа BIGINT, представляющее метку времени Unix в миллисекундах для входного значения даты и времени (общее число миллисекунд с учетом текущего часового пояса). Настройки часового пояса описаны в разделе Управление часовыми поясами.
- Если входное значение равно
NULL, функция возвращаетNULL. - Преобразует значения даты и времени с микросекундами (автоматически усекая их до миллисекунд).
- Если входное значение даты и времени предшествует
1970-01-01 00:00:00.000 UTC, результат будет отрицательным.
Примеры
-- Convert a DATETIME with millisecond precision, executed in a machine with the East 8 time zone
SELECT MILLISECOND_TIMESTAMP('2025-01-23 12:34:56.123');
+--------------------------------------------------+
| MILLISECOND_TIMESTAMP('2025-01-23 12:34:56.123') |
+--------------------------------------------------+
| 1737606896123 |
+--------------------------------------------------+
-- Explicitly specify the time zone as UTC
SELECT MILLISECOND_TIMESTAMP('2025-01-23 12:34:56.123 UTC');
+------------------------------------------------------+
| MILLISECOND_TIMESTAMP('2025-01-23 12:34:56.123 UTC') |
+------------------------------------------------------+
| 1737635696123 |
+------------------------------------------------------+
-- Convert datetime values with microseconds (automatically truncated to milliseconds)
SELECT MILLISECOND_TIMESTAMP('2024-01-01 00:00:00.123456');
+-----------------------------------------------------+
| MILLISECOND_TIMESTAMP('2024-01-01 00:00:00.123456') |
+-----------------------------------------------------+
| 1704038400123 |
+-----------------------------------------------------+
-- Specified time zone is out of range, returns NULL
SELECT MILLISECOND_TIMESTAMP('2025-01-23 12:34:56.123456 +15:00');
+------------------------------------------------------------+
| MILLISECOND_TIMESTAMP('2025-01-23 12:34:56.123456 +15:00') |
+------------------------------------------------------------+
| NULL |
+------------------------------------------------------------+
-- If the input datetime is before 1970 (standard UTC), returns a negative value
SELECT MILLISECOND_TIMESTAMP('1960-01-01 00:00:00 UTC');
+---------------------------------------------------+
| MILLISECOND_TIMESTAMP('1960-01-01 00:00:00 UTC') |
+---------------------------------------------------+
| -315619200000 |
+---------------------------------------------------+
-- Input type is DATE, time part is automatically set to 00:00:00.000 (results are negative in East 8 time zone)
SELECT MILLISECOND_TIMESTAMP('1970-01-01');
+-------------------------------------+
| MILLISECOND_TIMESTAMP('1970-01-01') |
+-------------------------------------+
| -28800000 |
+-------------------------------------+
-- Input is NULL, returns NULL
SELECT MILLISECOND_TIMESTAMP(NULL);
+-----------------------------+
| MILLISECOND_TIMESTAMP(NULL) |
+-----------------------------+
| NULL |
+-----------------------------+