从时间戳获取本地时间

时间:2017-04-12 05:55:11

标签: mysql node.js

我更新的列声明为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等格式?

1 个答案:

答案 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)。