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


当前回答

为什么要把字段保存为可读?只有我们AS

SELECT theTimeStamp, FROM_UNIXTIME(theTimeStamp) AS readableDate
               FROM theTable
               WHERE theTable.theField = theValue;

编辑:对不起,我们以毫秒而不是秒来存储所有内容。固定它。

其他回答

我认为你要找的是FROM_UNIXTIME()

为什么要把字段保存为可读?只有我们AS

SELECT theTimeStamp, FROM_UNIXTIME(theTimeStamp) AS readableDate
               FROM theTable
               WHERE theTable.theField = theValue;

编辑:对不起,我们以毫秒而不是秒来存储所有内容。固定它。

简单易行的方法:

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

可以使用DATE_FORMAT函数。这里有一个示例页面,以及可以用来选择不同日期组件的模式。

因为我发现这个问题没有意识到,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。