質問
私は次のように構造化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年1月1日午前七時00分00秒と1970-01-01午前19時○○分00秒である。
私のローカルマシン上でこのこのクエリは返します:
| 07:00:00 | 19:00:00 | 12 |
しかし、それが戻っているリモートマシン(生産)の
| 07:00:00 | 19:00:00 | 120000 |
これが起こって、どのようにそれを修正するかもしれない理由として任意のアイデア?
データの両方のセットは同一であり、あまりにも私の知る限りでは、両方のMySQLのインストールは同じです。
すべてのヘルプははるかに高く評価されます。
アップデートます:
5.0.27-コミュニティ-NT 5.0.51b-コミュニティ-ntの対:MySQLのバージョンでは少し異なっていることと思われます。これはおそらく理由です。
djtは、アカウント分に入れていないというビルの溶液中での良い点を提起しています。だけでなく、この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
など。
解決
私はそれをこのようにしてくださいます:
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