我已经在locanhost和Openshift上测试了表test,我面临的问题是,在openshift上,当我查询像这个WHERE arrivaltime BETWEEN curtime() - INTERVAL 2 MINUTE AND curtime() + INTERVAL 2 MINUTE这样的数据时,我什么也得不到,尽管在本地主机上,我将返回路由9。在openshift上,我将根据服务器时间插入到达时间。在本地主机上,我将根据本地时间插入到达时间,但当我将查询更改为WHERE time_format(arrivaltime,'%H:%i')= time_format(curtime() ,'%H:%i')形式时,我将在openshift上获得9,但我需要响应为+- 2分钟。我怎么才能修好它?或者有人有一个openshift帐户,如何测试表和下面的查询?
我很感谢你的帮助。
测试表
CREATE TABLE test(
id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
arrivaltime Time NOT NULL,
route INT(11) NOT NULL
)插入数据:
INSERT INTO test(arrivaltime, route) values('04:16:00', 9)此查询在Openshift上不工作,它在localhost:上工作。
SELECT route FROM test
WHERE arrivaltime BETWEEN curtime() - INTERVAL 2 MINUTE AND curtime() + INTERVAL 2 MINUTEopenshift curtime()
04:15:15当我像这样在openshift上查询测试时,我得到了响应,但是到达时间应该等于当前时间。
SELECT route FROM test
WHERE time_format(arrivaltime,'%H:%i')= time_format(curtime() ,'%H:%i')发布于 2015-06-21 15:45:00
嗯,我不太擅长MySQL。所以,也许有人可以改进我的问题。但我想问题在于您的服务器本地时间格式,或者MySQL是如何在您添加或减去时间之后返回时间格式的。
对于这个问题,我建议您使用这个查询,而不是像这样直接修改它。
select route from test where arrivaltime between subtime(curtime(), '00:02:00') and addtime(curtime(), '00:02:00');此外,为了确定问题所在,也许可以使用此查询来检查是否存在警告或错误。
show warnings;
show errors;https://stackoverflow.com/questions/30933408
复制相似问题