MySQL - FROM_UNIXTIME() 函数
MySQL FROM_UNIXTIME() 函数用于返回 UNIX 时间戳 的日期时间或字符串表示形式。UNIX 时间戳只是一个内部时间戳值,表示自 UTC 时间"1970-01-01 00:00:00"以来的秒数。
此函数接受 UNIX 时间戳作为参数,并将格式作为可选参数,将其转换为日期时间值或字符串(根据格式,如果指定)并返回结果。
此函数的特殊情况包括:
如果省略格式,此函数将返回 DATETIME 值。
如果 UNIX 时间戳或格式为 NULL,此函数将返回 NULL。
如果 UNIX 时间戳为整数,则 DATETIME 的秒小数部分精度为零。
当 UNIX 时间戳为十进制值时,DATETIME 的秒小数部分精度与十进制值的精度相同,最高为 6 位。
当 UNIX 时间戳为浮点数时,DATETIME 的秒小数部分精度为 6 位。
语法
以下是 MySQL FROM_UNIXTIME() 函数的语法−
FROM_UNIXTIME(unix_timestamp, [format])
参数
此方法接受两个参数。具体说明如下 −
unix_timestamp:UNIX 时间戳,表示自 1970 年 1 月 1 日 00:00:00 UTC 时间以来的秒数。
format (可选): 输出所需的格式。它是一个字符串,用于指定结果的格式。如果省略,默认格式为"YYYY-MM-DD HH:MM:SS"。
返回值
此函数返回一个 DATETIME 值,表示与给定 UNIX 时间戳对应的日期和时间。
示例
以下示例演示了 FROM_UNIXTIME() 函数的用法 -
SELECT FROM_UNIXTIME(0) As Result;
输出
获得以下输出 -
结果 |
---|
1970-01-01 05:30:00 |
示例
以下是此函数的另一个示例,我们将 Unix 时间戳 1351708200 转换为日期和时间格式 -
SELECT FROM_UNIXTIME(1351708200) As Result;
输出
获得以下输出 -
结果 |
---|
2012-11-01 00:00:00 |
示例
我们也可以将 date-time 表达式作为参数传递给此函数 -
SELECT FROM_UNIXTIME(1441426245.2300) As Result;
输出
这将产生以下结果 -
结果 |
---|
2015-09-05 09:40:45.2300 |
示例
我们也可以以字符串的形式传递时间戳值,如下所示 -
SELECT FROM_UNIXTIME('463455563') As Result;
输出
获得以下输出 -
结果 |
---|
1984-09-08 07:09:23.000000 |
示例
我们也可以将列名作为参数传递给此函数。让我们使用 CREATE 语句创建一个名为 MyPlayers 的表,如下所示 -
CREATE TABLE MyPlayers( ID INT, NAME VARCHAR(255), DOBTimestamp VARCHAR(255), Place_Of_Birth VARCHAR(255), Country VARCHAR(255), PRIMARY KEY (ID) );
现在,使用 INSERT 语句将以下记录插入到 MyPlayers 表中 -
INSERT INTO MyPlayers VALUES (1, 'Shikhar Dhawan', '376338600', 'Delhi', 'India'), (2, 'Jonathan Trott', '356725800', 'CapeTown', 'SouthAfrica'), (3, 'Kumara Sangakkara', '246738600', 'Matale', 'Srilanka'), (4, 'Virat Kohli', '594671400', 'Delhi', 'India'), (5, 'Rohit Sharma', '546719400', 'Nagpur', 'India'), (6, 'Ravindra Jadeja', '597349800', 'Nagpur', 'India'), (7, 'James Anderson', '394223400', 'Burnley', 'England');
执行以下查询以获取上述创建的表中的所有插入记录 -
Select * From MyPlayers;
以下是 ORDERS 表 -
ID | NAME | DOBTimestamp | Place_Of_Birth | Country |
---|---|---|---|---|
1 | Shikhar Dhawan | 376338600 | Delhi | India |
2 | Jonathan Trott | 356725800 | CapeTown | SouthAfrica |
3 | Kumara Sangakkara | 246738600 | Matale | Srilanka |
4 | Virat Kohli | 594671400 | Delhi | India |
5 | Rohit Sharma | 546719400 | Nagpur | India |
6 | Ravindra Jadeja | 597349800 | Nagpur | India |
7 | James Anderson | 394223400 | Burnley | England |
现在,我们使用 MySQL 的 FROM_UNIXTIME() 函数将 DOBTimestamp 列的值转换为日期时间值 -
SELECT ID, NAME, DOBTimestamp, FROM_UNIXTIME(DOBTimestamp) As Result From MyPlayers;
输出
输出结果如下 -
ID | NAME | DOBTimestamp | Result |
---|---|---|---|
1 | Shikhar Dhawan | 376338600 | 1981-12-05 00:00:00.000000 |
2 | Jonathan Trott | 356725800 | 1981-04-22 00:00:00.000000 |
3 | Kumara Sangakkara | 246738600 | 1977-10-27 00:00:00.000000 |
4 | Virat Kohli | 594671400 | 1988-11-05 00:00:00.000000 |
5 | Rohit Sharma | 546719400 | 1987-04-30 00:00:00.000000 |
6 | Ravindra Jadeja | 597349800 | 1988-12-06 00:00:00.000000 |
7 | James Anderson | 394223400 | 1982-06-30 00:00:00.000000 |