从时间戳获取本地时间
我有一个列更新声明为updated
TIMESTAMP,是唯一的TIMESTAMPtypes的列。
当我select updated from pushinfo;
我明白了
+---------------------+ | updated | +---------------------+ | 2017-04-11 15:33:46 | | 2017-04-11 15:35:02 | | 2017-04-12 10:15:54 | +---------------------+
当我使用select FROM_UNIXTIME(updated) from pushinfo;
我越来越
| FROM_UNIXTIME(updated) | +------------------------+ | NULL | | NULL | | NULL |
为什么不从FROM_UNIXTIME工作?
当我使用这个查询
conn.query(' select updated from pushinfo')
我得到更新如YYYY-MM-DDTHH:MM:SS.000Z
什么问题?
如何得到HH:MM:SS YYYY-MM-DD等格式?
FROM_UNIXTIME
需要一个Unix时间戳参数(即一个整数,它是Unix Epoch以来的秒数)。 你必须使用DATE_FORMAT() 。 这是因为即使列被定义为TIMESTAMP,MySQL也会将该值作为date而不是时间戳。 这是TIMESTAMPtypes列的MySQL的默认行为。 要获取实际的时间戳值,您必须使用UNIX_TIMESTAMP() 。
所以你的查询会像
conn.query(' select DATE_FORMAT(updated, "%H:%i:%s %Y-%m-%d") from pushinfo')
刚刚selectupdated
列时,您所得到的是MySQL服务器的默认date格式中该列的值。
问题的标题与其余部分无关。 您将永远不会从Unix时间戳获得当地时间,因为这总是在祖鲁时间(即UTC)。