好的我有一个包含四列的数据库。每列都有许多记录,所有记录都是使用mySQL TIME数据类型输入的。
如何查询数据库并返回最接近当前时间的时间值?
我已经设置好了,因此我有一个简单的webform,用户输入用户想要的列。我希望最接近所选列的当前时间的TIME值返回给用户。
COLUMN1 COLUMN2 COLUMN3 COLUMN4
11:00 11:40 11:25 11:35
12:05 12:25 12:35 12:25
等
因此,如果用户在webform中输入“3”并且当前时间是12:10,我希望将12:35值返回给他们。
我一直在谷歌搜索,我相信我需要使用CURTIME()。我不想要如何获取用户输入并使用它来查询哪个列的答案。我只需要知道如何返回最接近当前时间的列的时间值!谢谢。
答案 0 :(得分:3)
试试:
SELECT *
FROM table_name
WHERE time > CURTIME()
ORDER BY time ASC
LIMIT 1
编辑:
也许这是要走的路
SELECT * FROM table_name AS T
WHERE T.time = (SELECT MIN(T2.time) FROM table_name AS T2
WHERE T2.time > ?)
'?'是您的参考时间的占位符(通过PHP)。
答案 1 :(得分:1)
你可以这样做:
SELECT column3, TIMEDIFF(column3, CURTIME()) AS difference
FROM timetbl
ORDER BY ABS(difference) ASC
LIMIT 1
如果您只需要将来最接近的时间(例如当用户需要赶上火车时),difference
需要大于0,因此您需要添加WHERE TIMEDIFF(column3, CURTIME()) > '00:00'
答案 2 :(得分:0)
试试这个。它选择最后一个时间:
SELECT col1 FROM table_name order by col1 desc limit 1;