首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我在mysql上会得到一个随机的负数?

问为什么我在mysql上会得到一个随机的负数?
EN

Stack Overflow用户
提问于 2013-06-17 22:47:36
回答 1查看 117关注 0票数 0

我正在运行以下查询,但TIMESTAMPDIFF函数有一个随机结果返回一个负值,只有一个:

代码语言:javascript
复制
select JOB_ID,FROM_UNIXTIME(TIME_STARTED/1000) as TIME_STARTED,FROM_UNIXTIME(TIME_FINISHED/1000) as TIME_FINISHED,TIMESTAMPDIFF(SECOND,FROM_UNIXTIME(TIME_STARTED/1000, '%Y-%m-%d %h:%i:%s'),FROM_UNIXTIME(TIME_FINISHED/1000, '%Y-%m-%d %h:%i:%s')) AS DURATION from JOB;

以下是返回的一些数据:

代码语言:javascript
复制
| job_201306051933_0707 | 2013-06-10 23:16:57 | 2013-06-10 23:17:06 |        9 |
| job_201306051933_0832 | 2013-06-11 10:00:47 | 2013-06-11 10:29:03 |     1696 |
| job_201306051933_0850 | 2013-06-11 12:49:57 | 2013-06-11 13:18:30 |   -41487 |

同样,最后一个是唯一返回的负值,我不确定这是为什么。任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-17 23:21:46

您正在使用FROM_UNIXTIME()的默认格式来显示time_started和time_finished,但是为了计算时间差,您需要将时间戳转换为'%Y-%m-%d %h:%i:%s'格式。

在此格式中,%h表示小时01-12 (AM或PM),因此最后一行的time_finished为'2013-06-11 01:18:30‘。它是比同一行中的time_started更早的时间戳,所以您会得到一个负结果。

您应该使用`%H'而不是'%h'数小时来获取00-23范围内的正确值。或者使用与显示时间戳相同的默认格式。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17150433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档