我更新的列声明为updated
TIMESTAMP,并且是唯一的TIMESTAMP类型列。
当我做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等格式?
答案 0 :(得分:1)
FROM_UNIXTIME
需要一个Unix时间戳参数(即一个整数,它是自Unix Epoch以来的秒数)。您必须使用DATE_FORMAT()。这是因为即使该列被定义为TIMESTAMP,MySQL也会将该值作为日期而不是时间戳返回。这是TIMESTAMP类型列的MySQL的默认行为。要获取实际时间戳值,您必须使用UNIX_TIMESTAMP()。
所以你的查询就像
conn.query(' select DATE_FORMAT(updated, "%H:%i:%s %Y-%m-%d") from pushinfo')
当您选择updated
列时,您获得的是MySQL服务器的默认日期格式中该列的值。
你问题的标题与其余部分无关。你永远不会从Unix时间戳中获得当地时间,因为那总是在祖鲁时间(即UTC)。