MICROSECOND_TIMESTAMP
描述
MICROSECOND_TIMESTAMP 函数用于将输入的日期时间值转换为从 1970-01-01 00:00:00 加上本地时区偏移,开始计算的 Unix 时间戳,单位为微秒(1 秒 = 1,000,000 微秒)。该函数支持处理包含微秒精度的 DATETIME 类型 ,转换时会自动忽略时区差异(默认以 UTC 时间为基准)
语法
MICROSECOND_TIMESTAMP(`<datetime>`)
参数
参数 | 说明 |
---|---|
<datetime> | 表示要转换为 Unix 时间戳的日期时间,支持输入 datetime 类型,具体 datetime 格式请查看 datetime 的转换 |
返回值
返回 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 |
+-----------------------------+