最后于 更新
MICROSECOND_TIMESTAMP
描述
MICROSECOND_TIMESTAMP 函数将 DATETIME 或 TIMESTAMP_NS 值转换为以微秒为单位的 Unix 时间戳。对于 TIMESTAMP_NS,最后 3 位纳秒数字会被截断。
语法
MICROSECOND_TIMESTAMP(`<datetime>`)
参数
| 参数 | 说明 |
|---|---|
<datetime> | 要转换的 DATETIME 或 TIMESTAMP_NS 值。 |
返回值
返回 BIGINT 类型的整数,表示输入日期时间对应的 Unix 微秒时间戳(输入时间转换到当前时区下的总微秒数)。
- 若输入为 NULL,返回 NULL。
- 输入日期时间在1970-01-01 00:00:00.000 UTC 之前,结果返回负数
举例
---转换含 (scale) 微秒的 DATETIME,执行机器所在时区为东八区
SELECT MICROSECOND_TIMESTAMP('2025-01-23 12:34:56.123456');
+-----------------------------------------------------+
| MICROSECOND_TIMESTAMP('2025-01-23 12:34:56.123456') |
+-----------------------------------------------------+
| 1737606896123456 |
+-----------------------------------------------------+
---显式指定时区为 UTC
SELECT MICROSECOND_TIMESTAMP('2025-01-23 12:34:56.123456 UTC');
+---------------------------------------------------------+
| MICROSECOND_TIMESTAMP('2025-01-23 12:34:56.123456 UTC') |
+---------------------------------------------------------+
| 1737635696123456 |
+---------------------------------------------------------+
---输入类型为 date ,时间部分自动设置为 00:00:00.000000
SELECT MICROSECOND_TIMESTAMP('1970-01-01');
+-------------------------------------+
| MICROSECOND_TIMESTAMP('1970-01-01') |
+-------------------------------------+
| -28800000000 |
+-------------------------------------+
---指定时区超出范围,返回 NULL
SELECT MICROSECOND_TIMESTAMP('2025-01-23 12:34:56.123456 +15:00');
+------------------------------------------------------------+
| MICROSECOND_TIMESTAMP('2025-01-23 12:34:56.123456 +15:00') |
+------------------------------------------------------------+
| NULL |
+------------------------------------------------------------+
---若输入日期时间在 1970 年之前(标准 UTC),返回负数
SELECT MICROSECOND_TIMESTAMP('1960-01-01 00:00:00 UTC');
+---------------------------------------------------+
| MICROSECOND_TIMESTAMP('1960-01-01 00:00:00 UTC') |
+---------------------------------------------------+
| -315619200000000 |
+---------------------------------------------------+
---输入 NULL,返回 NULL
SELECT MICROSECOND_TIMESTAMP(NULL);
+-----------------------------+
| MICROSECOND_TIMESTAMP(NULL) |
+-----------------------------+
| NULL |
+-----------------------------+