MySQL - FROM_UNIXTIME() 函数



MySQL 的 FROM_UNIXTIME() 函数用于将 UNIX 时间戳 表示为日期时间或字符字符串值。UNIX 时间戳不过是一个内部时间戳值,表示自“1970-01-01 00:00:00”UTC 以来经过的秒数。

此函数接受 UNIX 时间戳作为参数,以及格式作为可选参数,将其转换为日期时间值或字符字符串(根据给定的格式),并返回结果。

此函数的特殊情况包括:

  • 如果省略 format,则此函数返回 DATETIME 值。

  • 如果 UNIX 时间戳或 format 为 NULL,则此函数返回 NULL。

  • 如果 UNIX 时间戳是整数,则 DATETIME 的小数秒精度为零。

  • 当 UNIX 时间戳是十进制值时,DATETIME 的小数秒精度与十进制值的精度相同,最多为 6 位。

  • 当 UNIX 时间戳是浮点数时,日期时间的秒小数精度为 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

示例

我们还可以将 日期时间 表达式作为参数传递给此函数:

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 姓名 DOBTimestamp 出生地 国家
1 希卡尔·达万 376338600 德里 印度
2 乔纳森·特罗特 356725800 开普敦 南非
3 库马拉·桑加卡拉 246738600 马塔莱 斯里兰卡
4 维拉特·科利 594671400 德里 印度
5 罗希特·沙尔马 546719400 纳格浦尔 印度
6 拉文德拉·贾德贾 597349800 纳格浦尔 印度
7 詹姆斯·安德森 394223400 伯恩利 英格兰

现在,我们使用 MySQL FROM_UNIXTIME() 函数将 DOBTimestamp 列的值转换为日期时间值:

SELECT ID, NAME, DOBTimestamp, FROM_UNIXTIME(DOBTimestamp) 
As Result From MyPlayers;

输出

输出如下所示:

ID 姓名 DOBTimestamp 结果
1 希卡尔·达万 376338600 1981-12-05 00:00:00.000000
2 乔纳森·特罗特 356725800 1981-04-22 00:00:00.000000
3 库马拉·桑加卡拉 246738600 1977-10-27 00:00:00.000000
4 维拉特·科利 594671400 1988-11-05 00:00:00.000000
5 罗希特·沙尔马 546719400 1987-04-30 00:00:00.000000
6 拉文德拉·贾德贾 597349800 1988-12-06 00:00:00.000000
7 詹姆斯·安德森 394223400 1982-06-30 00:00:00.000000
广告