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 は、Bill のソリューションが分数を考慮していないという点で良い点を挙げています。このdjtのソリューションと同様に、私が必要としているものではありません。

したがって、質問は、次のように分を含めて2回減算する方法に変化したと思います。

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 に答える