从时间戳获取本地时间

我有一个列更新声明为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)。