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

MICROSECOND

Описание​

Функция MICROSECOND извлекает первые шесть цифр дробной части секунды из входного значения даты и времени и возвращает число в диапазоне от 0 до 999999. Поддерживает DATETIME и TIMESTAMP_NS. Недостающие разряды заполняются нулями; для TIMESTAMP_NS последние три цифры наносекундной части игнорируются. Чтобы получить все девять цифр, используйте NANOSECOND.

Эта функция работает так же, как функция microsecond в MySQL.

Синтаксис​

MICROSECOND(`<datetime>`)

Параметры​

ПараметрОписание
<datetime>Входное значение даты и времени типа DATETIME или TIMESTAMP_NS. Поддерживаемые форматы описаны в разделах преобразование datetime и преобразование timestamp_ns.

Возвращаемое значение​

Возвращает значение типа INT, представляющее микросекундную часть значения даты и времени. Диапазон значений: от 0 до 999999. Если точность входного значения меньше 6, недостающие разряды заполняются нулями.

  • Если входное значение даты и времени не содержит микросекундной части (например, '2023-01-01 10:00:00'), возвращает 0.
  • Если входное значение равно NULL, возвращает NULL.
  • Если микросекундная точность входного значения даты и времени составляет менее 6 цифр, недостающие разряды автоматически заполняются нулями (например, 12:34:56.123 интерпретируется как 123000 микросекунд).
  • Для TIMESTAMP_NS функция возвращает первые шесть цифр дробной части секунды без округления по последним трём цифрам.

Примеры​


-- Extracts a value with 6-digit microseconds
SELECT MICROSECOND(CAST('1999-01-02 10:11:12.000123' AS DATETIME(6)));
+----------------------------------------------------------------+
| MICROSECOND(CAST('1999-01-02 10:11:12.000123' AS DATETIME(6))) |
+----------------------------------------------------------------+
| 123 |
+----------------------------------------------------------------+

-- Scale is 4
SELECT MICROSECOND(CAST('1999-01-02 10:11:12.0123' AS DATETIME(4)));
+--------------------------------------------------------------+
| MICROSECOND(CAST('1999-01-02 10:11:12.0123' AS DATETIME(4))) |
+--------------------------------------------------------------+
| 12300 |
+--------------------------------------------------------------+

-- Pads microsecond part with zeros (precision less than 6 digits)
SELECT MICROSECOND(CAST('1999-01-02 10:11:12.123' AS DATETIME(6)));
+-------------------------------------------------------------+
| MICROSECOND(CAST('1999-01-02 10:11:12.123' AS DATETIME(6))) |
+-------------------------------------------------------------+
| 123000 |
+-------------------------------------------------------------+

-- Datetime without scale returns 0
SELECT MICROSECOND(CAST('1999-01-02 10:11:12' AS DATETIME(6)));
+---------------------------------------------------------+
| MICROSECOND(CAST('1999-01-02 10:11:12' AS DATETIME(6))) |
+---------------------------------------------------------+
| 0 |
+---------------------------------------------------------+

-- For TIMESTAMP_NS, the final three nanosecond digits are ignored
SELECT MICROSECOND(CAST('2025-01-02 03:04:05.123456789' AS TIMESTAMP_NS));
+-----------------------------------------------------------------------+
| MICROSECOND(CAST('2025-01-02 03:04:05.123456789' AS TIMESTAMP_NS)) |
+-----------------------------------------------------------------------+
| 123456 |
+-----------------------------------------------------------------------+

-- When a string literal is valid for both datetime and time, prefer parsing it as time
SELECT MICROSECOND("22:12:12.123456");
+--------------------------------+
| MICROSECOND("22:12:12.123456") |
+--------------------------------+
| 123456 |
+--------------------------------+

-- Input is NULL, returns NULL
SELECT MICROSECOND(NULL);
+-------------------+
| MICROSECOND(NULL) |
+-------------------+
| NULL |
+-------------------+