7

次のようなクエリを実行すると:

SELECT HOUR( TIMEDIFF('2012-08-12 02:25:00', 
                      '2012-09-14 02:25:33') ) as result

将来の日付から過去のデータを引いているにもかかわらず、結果は 792 です。

私が削除HOUR()して行う場合:

SELECT TIMEDIFF('2012-08-12 02:25:00', 
                '2012-09-14 02:25:33')  as result

次に、値は-792:00:33です。したがって、明らかHOUR()に -792 を 792 に変換しています。他の日付で試してみましたが、結果は同じです (常に正の時間が返されます)。

マニュアルは、この動作について何も述べていません。

これはバグですか、それとも最近のすべての mysql インストールに存在することを信頼できる機能ですか?

4

2 に答える 2

6

プラスの時間とマイナスの時間を取得する方法があります。EXTRACT負のものを取得します。

SELECT EXTRACT(HOUR FROM '-01:00:00'), HOUR('-01:00:00')

戻ります:

-1    1
于 2014-07-30T09:10:27.400 に答える
1

これは予想される動作のようです (バグなのか機能なのかはわかりません)。例を参照してください。

mysql> select hour('-23:00:00');
+-------------------+
| hour('-23:00:00') |
+-------------------+
|                23 |
+-------------------+
1 row in set (0.04 sec)

そこから時間を取得する必要がある場合は、結果を解析することをお勧めします (可能であれば、SQL の外部で)

于 2012-09-13T22:13:19.767 に答える