是否有可用于将Unix时间戳转换为人类可读日期的MySQL函数?我有一个字段用于保存Unix时间,现在我想为人类可读日期添加另一个字段。
答案 0 :(得分:331)
SELECT
FROM_UNIXTIME(timestamp)
FROM
your_table;
答案 1 :(得分:92)
其他答案中缺少的内容(截至本文撰写时)并没有直接明显的是from_unixtime
可以采用第二个参数来指定格式,如下所示:
SELECT
from_unixtime(timestamp, '%Y %D %M %H:%i:%s')
FROM
your_table
答案 2 :(得分:31)
我认为你要找的是FROM_UNIXTIME()
答案 3 :(得分:18)
如果您可以快速访问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。