-1

サーバーを WAMP2.2 から WAMP2.4 にアップグレードしました。mysql-5.6.12 でクエリを実行中に苦労しています。

このクエリはNULLmysql-5.6.12 で返されますが、Mysql-5.5.8 では正常に実行されました。

クエリ:

SELECT DATE_ADD( NOW( ) , INTERVAL SEC_TO_TIME( TIMESTAMPDIFF(SECOND , NOW( ) , "2013-11-13 15:13:00" ) /2 )HOUR_SECOND )

どこで間違いを犯したのか、その背後にある問題は何なのか、誰でも教えてください。

4

2 に答える 2

1

ステートメントをその部分に分割して再度構築すると、このステートメントの結果が MySQL 5.5 と 5.6 で異なることに気付くでしょう。

SELECT TIMESTAMPDIFF(SECOND , NOW( ) , "2013-11-13 15:13:00" ) / 2;

MySQL 5.5 の場合、結果は整数であり、5.6 では浮動小数点数です。そう

MySQL 5.5
result is -36221
MySQL 5.6
result is -36221.0000

これが最終結果を台無しにしていると思います。

クエリを次のように変更した場合

SELECT DATE_ADD( NOW(), INTERVAL ROUND( SEC_TO_TIME( TIMESTAMPDIFF(SECOND, NOW(), "2013-11-13 15:13:00" ) / 2 ) ) HOUR_SECOND );

MySQL 5.5 と MySQL 5.6 の両方で同じ結果が得られます。

于 2013-11-14T11:33:57.920 に答える
0

皆さんありがとうございます。最後に、私は解決策を得ました。問題はデータ型です。クエリを変更しました

古いクエリから:

select DATE_ADD(NOW(),INTERVAL SEC_TO_TIME(TIMESTAMPDIFF(SECOND, NOW(), "2013-11-19 13:00:00")/2) HOUR_SECOND);

新しいクエリへ:

select DATE_ADD(NOW(),INTERVAL ceil(SEC_TO_TIME(TIMESTAMPDIFF(SECOND, NOW(), "2013-11-19 13:00:00"))/2) HOUR_SECOND);

ここでCeil()関数を使用しました

ご支援いただきありがとうございます。

于 2013-11-19T06:48:51.867 に答える