2011-05-15 196 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