最后于 更新
MICROSECOND
描述
MICROSECOND 函数用于提取输入日期时间值小数部分的前六位,返回范围为 0 到 999999。该函数支持 DATETIME 和 TIMESTAMP_NS。精度不足六位时在右侧补 0;对于 TIMESTAMP_NS,忽略最后三位纳秒数字。如需获取完整九位小数,请使用 NANOSECOND。
该函数与 mysql 中的 microsecond 函数 行为一致。
语法
MICROSECOND(`<datetime>`)
参数
| 参数 | 说明 |
|---|---|
<datetime> | 输入的日期时间值,类型为 DATETIME 或 TIMESTAMP_NS。支持的格式请参见 DATETIME 的转换和 TIMESTAMP_NS 的转换。 |
返回值
返回类型为 INT,返回日期时间值中的微秒部分。取值范围为 0 到 999999。对于精度小于 6 的输入,不足的位数补 0。
- 若输入的日期时间不含微秒部分(如 '2023-01-01 10:00:00'),返回 0。
- 若输入为 NULL,返回 NULL。
- 若输入的日期时间微秒精度小于 6 位,不足的位数自动补 0(例如 12:34:56.123 会解析为 123000 微秒)
- 对于 TIMESTAMP_NS,函数返回小数部分的前六位,不对最后三位进行四舍五入。
举例
--- 提取含 6 位微秒的值
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 为 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 |
+--------------------------------------------------------------+
--- 微秒部分补 0(精度不足 6 位)
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 |
+-------------------------------------------------------------+
---不带有 scale 的日期时间,则返回 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 |
+---------------------------------------------------------+
--- 对于 TIMESTAMP_NS,忽略最后三位纳秒数字
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 |
+-----------------------------------------------------------------------+
--- 输入字符串同时适用于 datetime/time 时,优先按 time 解析
SELECT MICROSECOND("22:12:12.123456");
+--------------------------------+
| MICROSECOND("22:12:12.123456") |
+--------------------------------+
| 123456 |
+--------------------------------+
---输入 NULL,返回 NULL
SELECT MICROSECOND(NULL);
+-------------------+
| MICROSECOND(NULL) |
+-------------------+
| NULL |
+-------------------+