我在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')
答案 0 :(得分:0)
我认为你的问题是由MySQL中的当前日期/时间函数简单混淆引起的。他们不会返回time
或datetime
或date
值。相反,他们返回字符串或数字:
以' HH:MM:SS'中的值返回当前时间。或HHMMSS格式, 取决于函数是用于字符串还是数字 上下文。该值以当前时区表示。
-
表示该值被解释为数字。要解决此问题,我通常会使用date_sub()
。但是您有time
个值,因此您可以尝试:
WHERE arrivaltime BETWEEN time(curtime()) - INTERVAL 2 MINUTE AND
time(curtime()) + INTERVAL 2 MINUTE