MySQL - UNIX_TIMESTAMP() 函数
MySQL UNIX_TIMESTAMP() 函数将日期、日期时间或时间戳表达式转换为 UNIX 时间戳,并以字符串形式返回结果。
此函数接受可选的 date 表达式作为参数,并返回自 UTC 时间"1970-01-01 00:00:00"以来的时间戳。如果传递给函数的参数包含小数部分,则返回值为小数。如果没有参数,则返回值将是一个整数,表示从 UTC 时间"1970-01-01 00:00:00"到当前时间戳所经过的秒数。
语法
以下是 MySQL UNIX_TIMESTAMP() 函数的语法 -
UNIX_TIMESTAMP([expr]);
参数
此方法接受日期时间或时间戳表达式,您需要从中获取 UNIX 时间戳作为参数。
返回值
此函数返回 Unix 时间戳值,即自 Unix 纪元 (1970-01-01 00:00:00 UTC) 以来与指定日期或当前日期对应的秒数。
示例
以下查询以无符号整数形式返回自 UTC 时间 '1970-01-01 00:00:00' 以来的 Unix 时间戳(以秒为单位)-
SELECT UNIX_TIMESTAMP() As Result;
输出
以下是输出 -
Result |
---|
1700557647 |
示例
如果我们为此函数指定一个早于 UTC 时间"1970-01-01 00:00:00"的日期或日期时间值,则返回 0 作为输出 -
SELECT UNIX_TIMESTAMP('1969-01-01') As Result;
输出
这将产生以下结果 -
Result |
---|
0 |
示例
以下查询将返回以下指定日期时间的 unix 时间戳(以秒为单位),即从 UTC 时间"1970-01-01 00:00:00"开始的无符号整数 -
SELECT UNIX_TIMESTAMP('1970-01-01 12:00:00') As Result;
输出
以下是输出 -
Result |
---|
23400 |
示例
在此示例中,我们使用以下 CREATE TABLE 查询创建了一个名为 ORDERS 的表 -
CREATE TABLE ORDERS ( OID INT NOT NULL, DATE VARCHAR (20) NOT NULL, CUSTOMER_ID INT NOT NULL, AMOUNT DECIMAL (18, 2) );
现在,使用 INSERT 语句将以下记录插入到 ORDERS 表中 -
INSERT INTO ORDERS VALUES (102, '2009-10-08 00:00:00', 3, 3000.00), (100, '2009-10-08 00:00:00', 3, 1500.00), (101, '2009-11-20 00:00:00', 2, 1560.00), (103, '2008-05-20 00:00:00', 4, 2060.00);
执行以下查询以获取上述创建的表中的所有插入记录 -
Select * From ORDERS;
以下是 ORDERS 表 -
OID | DATE | CUSTOMER_ID | AMOUNT |
---|---|---|---|
102 | 2009-10-08 00:00:00 | 3 | 3000.00 |
100 | 2009-10-08 00:00:00 | 3 | 1500.00 |
101 | 2009-11-20 00:00:00 | 2 | 1560.00 |
103 | 2008-05-20 00:00:00 | 4 | 2060.00 |
现在,我们使用 MySQL UNIX_TIMESTAMP() 函数来计算 ORDERS 表的"DATE"列中所有值的 Unix 时间戳 -
SELECT OID, DATE, UNIX_TIMESTAMP(DATE) As Result FROM ORDERS;
输出
输出显示如下 −
OID | DATE | Result |
---|---|---|
102 | 2009-10-08 00:00:00 | 1254940200.000000 |
100 | 2009-10-08 00:00:00 | 1254940200.000000 |
101 | 2009-11-20 00:00:00 | 1258655400.000000 |
103 | 2008-05-20 00:00:00 | 1211221800.000000 |