mysql - FROM_UNIXTIME 返回额外一小时

标签 mysql

我有一个非常简单的需求: 将一些毫秒值转换为“##:##:##”(小时/分钟/秒)格式。

看起来 FROM_UNIXTIME 可以完成这项工作,所以我使用了它,但是......

SELECT 
    FROM_UNIXTIME(42, "%H:%i:%s") AS pony
    ,FROM_UNIXTIME(3702, "%H:%i:%s") AS unicorn

返回

pony       unicorn
01:00:42   02:01:42

由于此函数中没有时区设置,我不知道如何删除这个额外的(wtf)小时。
删除 3600 秒会产生负值,从而输出 NULL

我想我应该使用另一种方式,但如果我必须使用六个转换,我也可以手动完成......没有什么简单而高效吗?

<小时/>

我没有确切的 MySQL 版本,但无论如何我都需要最低限度的可移植性。可以使用的东西,比如 MySQL 5.x 我需要手动进行计算吗?

<小时/>

编辑: 选择了一个丑陋但有效的“解决方案”:

CONCAT(
  LPAD(FLOOR((my_column/1000) / 3600), 2, '0'), ':',
  LPAD(FLOOR(((my_column/1000) % 3600) / 60), 2, '0'), ':',
  LPAD(FLOOR((my_column/1000) % 60), 2, '0')) AS time

具有所需格式的输出。 示例“03:12:04”或“123:00:44”

最佳答案

我不得不选择一个丑陋但有效的“解决方案”:

CONCAT(
  LPAD(FLOOR((my_column/1000) / 3600), 2, '0'), ':',
  LPAD(FLOOR(((my_column/1000) % 3600) / 60), 2, '0'), ':',
  LPAD(FLOOR((my_column/1000) % 60), 2, '0')) AS time

具有所需格式的输出。示例“03:12:04”或“123:00:44

C14L的评论应该是一个更好的选择,但这只会让事情变得更糟:/

如果您有可靠且易于使用的东西,请发布答案。
必须手动进行此类计算对我来说没有意义。

关于mysql - FROM_UNIXTIME 返回额外一小时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46442970/

相关文章:

mysql - 索引列和顺序

mysql - 管理内部的大量数据和图像

php - 使用mysql数据库详细信息访问亚马逊mysql数据库

PHP多表数据分页

php - Laravel 中的简单 MySQL 选择查询问题

从数据库删除时出现 MySQL Date_Sub 问题(使用变量)

javascript - 如何正确执行从react-native到express.js和mySQL后端的POST请求

MySQL-sql服务器: consistency check

mysql - Django-MySQL 无法识别额外查询集中的 model.column?

php - 显示已登录的用户详细信息