-1

我将我的服务器从 WAMP2.2 升级到了 WAMP2.4。我在 mysql-5.6.12 上执行查询时很挣扎。

此查询NULL在 mysql-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 回答