Convert Unix timestamp into human readable date using MySQL
有没有mysql函数可以用来将unix时间戳转换为人类可读的日期?我有一个保存Unix时间的字段,现在我想为人类可读的日期添加另一个字段。
使用
1 2 3 4 |
号
另请参见:
其他答案(如本文所述)中缺少且不直接显而易见的是,
1 2 3 4 |
我想你要找的是
在特定时区需要一个Unix时间戳?
如果您可以快速访问mysql cli,这里有一个一行程序:
1 2 3 4 5 6 7 | mysql> select convert_tz(from_unixtime(1467095851), 'UTC', 'MST') as 'local time'; +---------------------+ | local time | +---------------------+ | 2016-06-27 23:37:31 | +---------------------+ |
。
用你想要的时区替换
为什么要将字段保存为可读字段?只有我们一家
1 2 3 | SELECT theTimeStamp, FROM_UNIXTIME(theTimeStamp) AS readableDate FROM theTable WHERE theTable.theField = theValue; |
编辑:对不起,我们以毫秒而不是秒存储所有内容。修好了。
您可以使用日期格式功能。这是一个包含示例的页面,以及用于选择不同日期组件的模式。
由于我发现这个问题并不清楚,MySQL总是将时间存储在UTC的时间戳字段中,但会在本地时区显示(例如phpmyadmin),因此我想添加我的发现。
我有一个自动更新的"上次修改"字段,定义为:
1 |
用phpmyadmin查看,它看起来像是在本地时间,内部是UTC
1 2 | 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时间戳和"as utc"始终以utc时间显示。
先运行两次,不设置时区。
简单易行的方法:
埃多克斯1〔6〕