2010-02-18 78 views
2

我需要一個查詢類似於它選擇多個日期

SELECT datetime FROM blog WHERE UNIX_TIMESTAMP(datetime) < '".($date_string_in_seconds +1000)."' ORDER BY datetime DESC 

但不是返回比參數中給出了一個更小的最晚日期的MySQL日期查詢,它必須返回:
- 如果存在具有參數
-if的確切日期的記錄,則其中最早的時間戳高於參數
-if存在,其中一個最新的時間戳小於參數(查詢的內容以上退貨)
換句話說,它笑在此之前和之後,我們會返回給定的日期和那些日期。該查詢應該返回至多三個,並且至少有一個記錄具有有效的日期。

我需要此信息作爲啓用/禁用博客頁面上的上一個和下一個輸入按鈕的基礎,並且當前通過兩個單獨的查詢獲取信息。
我懷疑有更好的方法。這可能與一個單一的查詢?

回答

1
SELECT datetime 
FROM (
     SELECT datetime 
     FROM blog 
     WHERE datetime < FROM_UNIXTIME($date) 
     ORDER BY 
       datetime DESC 
     LIMIT 1 
     ) p 
UNION ALL 
SELECT datetime 
FROM blog 
WHERE datetime = FROM_UNIXTIME($date) 
UNION ALL 
SELECT datetime 
FROM (
     SELECT datetime 
     FROM blog 
     WHERE datetime > FROM_UNIXTIME($date) 
     ORDER BY 
       datetime 
     LIMIT 1 
     ) n 
+0

正好。謝謝一堆! – 2010-02-18 17:12:24