2016-11-15 148 views
1

我正在製作一個顯示電視節目時間表的小型項目。主要問題是我需要顯示4個程序,包括當前程序。問題是,我真的不知道,如果從結果的第一個節目是當前或可能只是接下來的前面還是很到位......如何根據當前日期時間獲取當前和下一個日期時間記錄?

例如:

+----+------------+----------+ 
| id | date  | time  | 
+----+------------+----------+ 
| 38 | 2016-11-15 | 11:55:00 | 
| 39 | 2016-11-15 | 13:00:00 | 
| 40 | 2016-11-15 | 13:30:00 | 
| 41 | 2016-11-15 | 14:00:00 | 
| 42 | 2016-11-15 | 14:30:00 | 
| 43 | 2016-11-15 | 15:00:00 | 
| 44 | 2016-11-15 | 15:30:00 | 
| 45 | 2016-11-15 | 16:30:00 | 
| 46 | 2016-11-15 | 18:30:00 | 
| 47 | 2016-11-15 | 19:20:00 | 
+----+------------+----------+ 
  • 當前時間是12:15,所以我需要得到ID:38,39,40,41
  • 當前時間是13:33,所以我需要得到ID:40,11,40,41

所以基本上我需要得到4行,首先應該是目前s如果存在的話。

+0

「我需要得到身份證:40,11,40,41」 - 你介意解決這個問題嗎? –

+0

您是否嘗試過我的答案 – e4c5

回答

2

您還沒有什麼時間段屬於程序很清楚,所以我猜測,這是你在找什麼

SELECT * FROM shows where id >= 
    (SELECT id FROM shows 
    WHERE `time` <= '13:33' AND `date` = '2016-11-15' 
    ORDER BY `time` DESC LIMIT 1) 
LIMIT 4; 
+0

我認爲這是正確的解決方案只有一個更正在'時間'<= '13:33' –

+0

謝謝@MuhammedImranHussain的建議 – e4c5

+1

我需要檢查'curtime> = program_time && curtime Kin

1

相當直截了當:

SELECT * 
FROM shows 
WHERE TIMESTAMP(date, time) >= (
    SELECT TIMESTAMP(date, time) 
    FROM shows 
    WHERE TIMESTAMP(date, time) <= CURRENT_TIMESTAMP 
    ORDER BY TIMESTAMP(date, time) DESC 
    LIMIT 1 
) 
ORDER BY TIMESTAMP(date, time) 
LIMIT 4 

當前時間爲2016-11-15 12:59:59時的結果:

+------+------------+----------+ 
| id | date  | time  | 
+------+------------+----------+ 
| 38 | 2016-11-15 | 11:55:00 | 
| 39 | 2016-11-15 | 13:00:00 | 
| 40 | 2016-11-15 | 13:30:00 | 
| 41 | 2016-11-15 | 14:00:00 | 
+------+------------+----------+ 

當前時間爲時的結果:

+------+------------+----------+ 
| id | date  | time  | 
+------+------------+----------+ 
| 39 | 2016-11-15 | 13:00:00 | 
| 40 | 2016-11-15 | 13:30:00 | 
| 41 | 2016-11-15 | 14:00:00 | 
| 42 | 2016-11-15 | 14:30:00 | 
+------+------------+----------+ 

TIMESTAMP功能用於日期和時間結合起來。