提问者:小点点

使用mySQL将Unix时间戳转换为自定义的可读时间


我在一个MySQL数据库中有下表:

+----------+---------------------+-----------------+---------------+
| id       | firstName           | lastName        | tstamp        |
+----------+---------------------+-----------------+---------------+
| 133      | James               | Mosher          | 1589470887919 |  
| 145      | Bill                | Turner          | 1589470888235 | 
| 146      | Jeremy              | Vine            | 1589470888592 |  
| 152      | Ramon               | Jesus           | 1589470889319 |
+----------+---------------------+-----------------+---------------+

我希望能够以人类可读的日期时间格式看到tstamp列。 我尝试了以下查询,但它没有工作,给了我一个空白列。 有人知道我做错了什么吗?

选择id,名字,姓氏,tstamp,FROM_UNIXTIME(tstamp,“%y%d%m%h:%i:%s”)作为来自学生的时间和日期;

结果:

+----------+---------------------+-----------------+---------------+---------------+
| id       | firstName           | lastName        | tstamp        | timeAndDate   |
+----------+---------------------+-----------------+---------------+---------------+
| 133      | James               | Mosher          | 1589470887919 |               | 
| 145      | Bill                | Turner          | 1589470888235 |               |
| 146      | Jeremy              | Vine            | 1589470888592 |               |
| 152      | Ramon               | Jesus           | 1589470889319 |               |
+----------+---------------------+-----------------+---------------+---------------+

示例->; https://www.db-fiddle.com/f/nfsntkfnydbcbs8pdgbcdq/0


共2个答案

匿名用户

时间戳包含毫秒。
如果除以1000,则可以删除这些时间戳:

SELECT id, firstName, lastName, tstamp, 
  FROM_UNIXTIME(tstamp / 1000, '%Y %D %M %H:%i:%s') AS timeAndDate 
FROM myTable;

请参阅演示。

匿名用户

看评论,但我猜你想要的是这样的东西。。。

SELECT DATE_FORMAT(FROM_UNIXTIME(1589470887919/1000),'%Y %d %m %H:%i:%s') x;
+---------------------+
| x                   |
+---------------------+
| 2020 14 05 16:41:27 |
+---------------------+