2

我有一个结构如下的 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 07:00:00 和 1970-01-01 19:00:00。

在我的本地机器上,这个查询返回:

| 07:00:00 | 19:00:00 | 12 |

但是在远程机器(生产)上它正在返回

| 07:00:00 | 19:00:00 | 120000 |

关于为什么会发生这种情况以及如何解决它的任何想法?

两组数据是相同的,据我所知,两个 MySQL 安装也是相同的。

任何帮助深表感谢。

更新:

MySQL 的版本似乎略有不同:5.0.27-community-nt 与 5.0.51b-community-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

等等

4

3 回答 3

1

我会这样做:

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;
于 2008-12-12T00:49:43.690 回答
1

通常导致不同输出的相同方法给人的印象是它是不同的服务器配置或版本。我真的无法提供帮助,但可能值得在您的查询中尝试以下方法:

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;

这将为您提供开放时间、分钟和秒的格式化时间戳。

于 2008-12-12T00:53:36.740 回答
0

有没有比这更好的解决方案:

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;
于 2008-12-12T04:53:26.163 回答