使用MySQL将Unix时间戳转换为人类可读日期

时间:2011-06-07 15:23:30

标签: mysql unix-timestamp

是否有可用于将Unix时间戳转换为人类可读日期的MySQL函数?我有一个字段用于保存Unix时间,现在我想为人类可读日期添加另一个字段。

8 个答案:

答案 0 :(得分:331)

使用FROM_UNIXTIME()

SELECT
  FROM_UNIXTIME(timestamp) 
FROM 
  your_table;

另请参阅:MySQL documentation on FROM_UNIXTIME()

答案 1 :(得分:92)

其他答案中缺少的内容(截至本文撰写时)并没有直接明显的是from_unixtime可以采用第二个参数来指定格式,如下所示:

SELECT
  from_unixtime(timestamp, '%Y %D %M %H:%i:%s')
FROM 
  your_table

答案 2 :(得分:31)

我认为你要找的是FROM_UNIXTIME()

答案 3 :(得分:18)

在特定时区需要unix时间戳?

如果您可以快速访问mysql cli,那么这是一个单行程序:

mysql> select convert_tz(from_unixtime(1467095851), 'UTC', 'MST') as 'local time';

+---------------------+
| local time          |
+---------------------+
| 2016-06-27 23:37:31 |
+---------------------+

'MST'替换为您想要的时区。我住在亚利桑那州,因此从UTC转换为MST。

答案 4 :(得分:6)

为什么要将字段保存为可读?只是我们AS

SELECT theTimeStamp, FROM_UNIXTIME(theTimeStamp) AS readableDate
               FROM theTable
               WHERE theTable.theField = theValue;
编辑:抱歉,我们以毫秒为单位存储所有内容,而不是秒。修正了它。

答案 5 :(得分:4)

您可以使用DATE_FORMAT函数。 Here是一个包含示例的页面,以及可用于选择不同日期组件的模式。

答案 6 :(得分:0)

简便方法:

select from_unixtime(column_name, '%Y-%m-%d') from table_name

答案 7 :(得分:0)

由于我发现这个问题没有意识到,因此mysql总是将时间存储在UTC的时间戳字段中,但会在本地时区显示(例如phpmyadmin)。

我有一个自动更新的last_modified字段,定义为:

`last_modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

用phpmyadmin查看它,看起来好像是本地时间,内部是UTC

SET time_zone = '+04:00'; // or '+00:00' to display dates in UTC or 'UTC' if time zones are installed.
SELECT last_modified, UNIX_TIMESTAMP(last_modified), from_unixtime(UNIX_TIMESTAMP(last_modified), '%Y-%c-%d %H:%i:%s'), CONVERT_TZ(last_modified,@@session.time_zone,'+00:00') as UTC FROM `table_name`

在任何星座中,UNIX_TIMESTAMP和'as UTC'始终以UTC时间显示。

运行两次,首先不设置time_zone。