题
我有一个MySQL查询结构如下:
SELECT time(c.start_time),
time(c.end_time),
time(c.end_time) - time(c.start_time) as 'opening_hours'
FROM my_shop c;
在开始和结束时间的数据是分别1970-01-01 7点00分00秒和19时00分00秒1970-01-01
在我的本地机器本该查询返回:
| 07:00:00 | 19:00:00 | 12 |
然而,它返回一个远程机器(生产)上
| 07:00:00 | 19:00:00 | 120000 |
任何想法,为什么这可能发生,以及如何解决它?
数据的两组是相同的,也最好我所知的两个MySQL安装是相同的。
任何帮助十分赞赏。
更新
这似乎是,MySQL的版本略有不同:5.0.27社区-NT与5.0.51b社区-NT。这是最有可能的原因。
DJT已经提出了在比尔的解决方案好点没有考虑到分钟。除了这个DJT的解决方案是不是我需要相当的东西。
,所以我想问题已经演变成如何减去两个时段,包括分钟,使得:
1970-01-01 19:00:00 - 1970-01-01 07:00:00 = 12
1970-01-01 19:00:00 - 1970-01-01 07:30:00 = 11.5
1970-01-01 19:00:00 - 1970-01-01 07:45:00 = 11.25
等
解决方案
我会做这种方式:
SELECT TIME(c.start_time),
TIME(c.end_time),
EXTRACT(HOUR FROM TIMEDIFF(TIME(c.end_time), TIME(c.start_time)))
AS 'opening_hours'
FROM my_shop c;
其他提示
一般引起不同的输出的相同方法给人的印象是它可以是一个不同的服务器配置或版本。我不是真的能够帮助与但它可能是值得尝试在您的查询下面的方法来代替:
SELECT TIME(c.start_time), TIME(c.end_time), TIMEDIFF(TIME(c.end_time), TIME(c.start_time)) as 'opening_hours' FROM my_shop c;
这会给你的开口小时,分钟和秒的格式化时间戳记。
是否有比这更好的解决方案:
SELECT EXTRACT(HOUR FROM TIMEDIFF(TIME(c.end_time), TIME(c.start_time)))
+ ((EXTRACT(MINUTE FROM TIMEDIFF(TIME(c.end_time), TIME(c.start_time))))/60)
FROM my_shop c;
不隶属于 StackOverflow