2011-05-15 222 views
2

如果在where語句中,我試圖讓所有行的datetime大於NOW(),但如果type ='economy',我想限制它只顯示if datetime與NOW()之間的日期大於14天。在if語句中使用where語句

喜歡的東西:

Select type,date(datetime) as date 
from tbl1 
where datetime > NOW() 
IF(type = 'economy') && datediff(datetime,NOW()) > 14 
order by datetime desc 

我試着情況下還可以,但不能看着辦吧......

+0

被稱爲是(即您的實際字段名日期時間) – judda 2011-05-15 18:53:35

回答

10

您可以將標準只分爲2周不同的比較:

select type,date(datetime) as date 
from tbl1 
where (datetime > NOW() AND type <> 'economy') OR 
     (datediff(datetime, NOW()) > 14 AND type = 'economy') 
order by datetime desc 

(未檢查的語法錯誤,但這個想法應該是正確的......)

+0

是的,這工作:)感謝兩個後來的答案 - 他們有點相同,所以我會檢查這一個:) – 2011-05-15 19:15:23

2
WHERE ((type <> 'economy') AND (datetime > now)) OR ((type = 'economy') AND (datediff(datetime,NOW()) > 14) 

'

2
SELECT type, date(datetime) AS date 
FROM tbl1 
WHERE (type <> 'economy' AND datetime > NOW()) 
    OR (type = 'economy' AND datediff(datetime, NOW()) > 14) 
+0

-1,您需要檢查(鍵入<>'經濟')在where語句的第一部分。 – Jaymz 2011-05-15 18:56:50

+0

正確...知道我忘了一些東西。調整。 – judda 2011-05-15 18:58:52

+0

+1 - 現在它是正確的:) – Jaymz 2011-05-15 18:59:33