【问题标题】:MYSQL: Return column time value based on current time?MYSQL:根据当前时间返回列时间值?
【发布时间】:2015-05-24 10:14:10
【问题描述】:

好的,我有一个包含四列表的数据库。每列有许多记录,所有时间都使用 mySQL TIME 数据类型输入。

请问如何查询数据库并返回最接近当前时间的时间值?

我已经设置好了,所以我有一个简单的网络表单,它接受用户输入用户想要的列。我希望将所选列中最接近当前时间的 TIME 值返回给用户。

COLUMN1 COLUMN2 COLUMN3 COLUMN4
11:00   11:40   11:25   11:35
12:05   12:25   12:35   12:25

因此,如果用户在网络表单中输入“3”并且当前时间是 12:10,我希望将 12:35 的值返回给他们。

我一直在谷歌搜索,我认为我需要使用 CURTIME()。我不想回答如何获取用户输入并使用它来查询哪一列。我只需要知道如何返回最接近当前时间的列时间值!谢谢。

【问题讨论】:

标签: php mysql


【解决方案1】:

试用:

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)。

【讨论】:

  • 是的!效果很好!!虽然我不得不将 ORDER 更改为 ORDER BY....谢谢先生!
  • 不客气!我编辑了 SQL (ORDER -> ORDER BY)。祝你有美好的一天。
【解决方案2】:

你可以这样做:

SELECT column3, TIMEDIFF(column3, CURTIME()) AS difference 
FROM timetbl 
ORDER BY ABS(difference) ASC 
LIMIT 1

如果您只需要未来最接近的时间(例如当用户需要赶火车时),difference 需要大于 0,因此您需要添加 WHERE TIMEDIFF(column3, CURTIME()) > '00:00'

【讨论】:

    【解决方案3】:

    试试这个。它选择时间的最后一个条目:

    SELECT col1 FROM table_name order by col1 desc limit 1;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-13
      • 2012-03-20
      • 1970-01-01
      • 2019-02-22
      • 1970-01-01
      • 2019-12-15
      相关资源
      最近更新 更多