我正在開發日曆應用程序。它存儲兩種格式的時間。該表格具有以下列title, startDate, startTime
。如果用戶提供開始時間加上開始日期。數據庫在startTime
列中存儲UNIX時間戳(自UNIX epok以來的秒數),而startDate是NULL
。如果用戶僅提供開始日期,則數據庫以nnnn-mm-dd
的格式在'startTime`中以startDate
和NULL
存儲日期。我有這個數據庫結構,因爲在世界各地顯示時間更容易,因爲不同的時區有不同的夏令時。SQL語句中的Where語句中的IF語句
我想選擇指定日期之後發生的事件。客戶端計算機爲服務器提供當天開始的UNIX時間戳($unix
)和格式爲nnnn-mm-dd
的日期($date
)以選擇正確的日期。
問題是,我不知道如何選擇那些如上所述發生的日子。這種解決方案並不適用於我,即使它的工作原理:
SELECT *
FROM events
WHERE startDate >= '$date'
OR startTime >= '$unix'
的事情是我有一些行,其中UNIX時間戳在startTime
提供,我也有startDate
提供的日期和其他原因,我我不想解釋。正因爲如此,我無法使用上面的解決方案。
我需要某種形式的解決方案,它有一個IF語句中Where子句,如:
SELECT *
FROM events
WHERE IF(startTime = NULL, startDate >= '$date', startTime >= '$unix')
我只是猜測這個解決方案。但是,對嗎?
爲什麼兩個'NULL NULL'? – einstein 2011-05-13 04:32:25
@ Woho87:你永遠不會有足夠的NULL! ;) – 2011-05-13 04:35:21
@ Woho87:沒有兩個空值。在第一次修訂中,但我在10秒後修復了錯字。 – zerkms 2011-05-13 04:35:54