我正在locanhost和Openshift上测试表,我遇到的问题是,在openshift上查询类似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分钟。没有间隔,我怎么能做到这一点,或者有人可以看到问题?
测试表:
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')
最佳答案
我认为您的问题是由于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
关于mysql - SQL INTERVAL在openshift上不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30414436/