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


Answers:



108

其他答案(在撰写本文时)缺少的是,from_unixtime还不能直接显而易见的是,可以采用第二个参数来指定格式,如下所示:

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

20
非常小的问题,但是%h是12小时格式的小时,因此需要%p才能保证完整性(AM / PM)。或%H以24小时格式给出小时。
2015年


19

需要特定时区的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。


7

为什么要麻烦地将字段保存为可读的?只有我们AS

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

编辑:对不起,我们以毫秒为单位存储所有内容,而不是秒。解决它。


4

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



1

因为我发现这个问题没有意识到,所以mysql总是将时间存储在UTC的timestamp字段中,但是会在本地时区显示(例如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。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.