MYSQL:根据当前时间返回列时间值?

时间:2015-05-24 10:14:11

标签: php mysql

好的我有一个包含四列的数据库。每列都有许多记录,所有记录都是使用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()。我不想要如何获取用户输入并使用它来查询哪个列的答案。我只需要知道如何返回最接近当前时间的列的时间值!谢谢。

3 个答案:

答案 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;