SQL INTERVAL不适用于openshift

时间:2015-05-23 15:28:33

标签: mysql sql openshift

我在locanhost和Openshift上测试表我遇到的问题是在openhift上我查询数据时没有得到任何回复WHERE arrivaltime BETWEEN curtime() - INTERVAL 2 MINUTE AND curtime() + INTERVAL 2 MINUTE虽然在本地主机上我得到了路由9。在openshift上,我根据服务器时间插入到达时间。在localhost上我根据当地时间插入到达时间,但是当我将查询更改为此格式时WHERE time_format(arrivaltime,'%H:%i')= time_format(curtime() ,'%H:%i')我在openshift上得到了一些东西,但我需要我的回复是+ - 2分钟。如何在没有INTERVAL的情况下达到这个目标,或者有人能看到问题?

测试表:

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('11:17:00', 9)

此查询不适用于Openshift,它适用于localhost:

SELECT route FROM test
WHERE arrivaltime BETWEEN curtime() - INTERVAL 2 MINUTE AND curtime() + INTERVAL 2 MINUTE

Openshift时间:

curtime()
11:18:57

当我在openshift上查询这样的test时,我得到了响应,但到达时间应该等于当前时间。

SELECT route FROM test
WHERE time_format(arrivaltime,'%H:%i')= time_format(curtime() ,'%H:%i')

1 个答案:

答案 0 :(得分:0)

我认为你的问题是由MySQL中的当前日期/时间函数简单混淆引起的。他们不会返回timedatetimedate值。相反,他们返回字符串或数字:

  

以' HH:MM:SS'中的值返回当前时间。或HHMMSS格式,   取决于函数是用于字符串还是数字   上下文。该值以当前时区表示。

-表示该值被解释为数字。要解决此问题,我通常会使用date_sub()。但是您有time个值,因此您可以尝试:

WHERE arrivaltime BETWEEN time(curtime()) - INTERVAL 2 MINUTE AND
                          time(curtime()) + INTERVAL 2 MINUTE