2015-05-24 30 views
3

好吧我有一個包含四列的表的數據庫。每列都有許多記錄,所有記錄都以mySQL TIME數據類型輸入。MYSQL:基於當前時間返回列時間值?

如何查詢數據庫並返回最接近當前時間的時間值?

我已經設置好了,讓我有一個簡單的網絡表單,用戶需要輸入用戶需要的列。我希望將選定列中距離當前時間最近的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()。我不想要如何接受用戶輸入並用它來查詢哪一列的答案。我只需要知道如何返回最接近當前時間的列的時間值!謝謝。

+0

你會規範化你的設計 – Strawberry

+0

記錄是否有特定的順序?即最近的一次/最後一次? – user1849060

+0

[SQL Query顯示最近的日期?](http://stackoverflow.com/questions/6186962/sql-query-to-show-nearest-date) –

回答

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

+0

Yesssss !!很棒!雖然我必須將ORDER更改爲ORDER BY ....謝謝先生! – VanZan

+0

非常歡迎您!我編輯了SQL(ORDER - > ORDER BY)。祝你今天愉快。 – Per76

0

試試這個。它選擇時間的最後一個條目:

SELECT col1 FROM table_name order by col1 desc limit 1;

1

你可以這樣做:

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

,如果您只需要那些在未來(當用戶需要趕火車等)最接近的時間,difference需要大於0,所以你'd add WHERE TIMEDIFF(column3, CURTIME()) > '00:00'

相關問題