跳到主要内容

SECOND_TIMESTAMP

描述

SECOND_TIMESTAMP 函数用于将输入的日期时间值转换为 Unix 时间戳(以秒为单位),该时间戳表示从 1970-01-01 00:00:00 UTC 开始到指定日期时间的总秒数。该函数支持处理 DATETIME,该函数结果会加上机器所在的时区偏移,时区部分请查看 时区管理

别名

  • UNIX_TIMESTAMP()

语法

SECOND_TIMESTAMP(<datetime>)

参数

参数说明
<datetime>必填,输入的 DATETIME 值,表示要转换为 Unix 时间戳的日期时间。支持输入 datetime 类型,具体 datetime 格式请查看 datetime 的转换

返回值

返回类型为 BIGINT,表示输入日期时间转换为当前时区所对应的 Unix 时间戳(以秒为单位)。

特殊情况说明:

  • 若输入为 DATE 类型(仅包含年月日),默认其时间部分为 00:00:00;
  • 若输入的日期时间早于 1970-01-01 00:00:00,返回负数时间戳;
  • <datetime> 为 NULL,返回 NULL;

举例

--- 输入初始日期,返回 0
SELECT SECOND_TIMESTAMP('1970-01-01 00:00:00') AS result;
+--------+
| result |
+--------+
| 0 |
+--------+

--- DATETIME 类型转时间戳
SELECT SECOND_TIMESTAMP('2025-01-23 12:34:56') AS result;
+------------+
| result |
+------------+
| 1737606896 |
+------------+

--- DATE 类型(默认时间为 00:00:00)
SELECT SECOND_TIMESTAMP('2023-01-01') AS result;
+------------+
| result |
+------------+
| 1672502400 |
+------------+


--- 早于 1970-01-01 的日期(返回负数)
SELECT SECOND_TIMESTAMP('1964-10-31 23:59:59') AS result;
+------------+
| result |
+------------+
| -163065601 |
+------------+

--- 带有微秒的 DATETIME(忽略微秒)
SELECT SECOND_TIMESTAMP('2023-07-13 22:28:18.456789') AS result;
+------------+
| result |
+------------+
| 1689258498 |
+------------+

--- 输入为 NULL(返回 NULL)
SELECT SECOND_TIMESTAMP(NULL) AS result;
+--------+
| result |
+--------+
| NULL |
+--------+