2016-05-31 81 views
-4

我无法解决我自己的广告发布系统中的问题。MYSQL IF NOT NULL包含在查询中

mysql表中有“publishing_date”和“expiration_date”列。这些列不需要填充(默认值),它们是整数类型。 在mysql查询中,广告将正常列出,如果这两列不为空,那么它们将包含在查询中。

Example: 

publishing_date < current_date < expiration_date 

Table: 

id|publishing_date|expiration_date 
1|1450821600|1451512800 ---> 2015/12/23 - 2015/12/31 
2|1464555600|1465506000 ---> 2016/05/30 - 2016/06/10 
3|NULL|NULL 
4|NULL|NULL 

它应该显示2,3,4 IDS

+2

添加样本表数据和预期结果 – jarlh

+0

哪些数据类型是publishing_date和expiration_date列? – scaisEdge

+0

数据类型是整数 – Yavuz

回答

0

如果我理解正确你的问题,然后此查询应该工作。

SELECT id FROM ads WHERE FROM_UNIXTIME(publishing_date, '%Y-%m-%d') < DATE(NOW()) AND FROM_UNIXTIME(expiration_date, '%Y-%m-%d') < DATE(NOW()) OR (publishing_date IS NULL AND expiration_date IS NULL) 
+0

检查表名。 – Gadget

+0

感谢您的帮助。我解决了我的问题 SELECT DISTINCT ID FROM广告WHERE(发布日期IS NULL和expiration_date IS NULL)OR(发布日期 UNIX_TIMESTAMP()AND(发布日期非空且expiration_date不为空)) – Yavuz

+0

Couldn'因此,您将其简化为:'SELECT DISTINCT id FROM ads WHERE(publisher_date IS NULL AND expiration_date is NULL)OR(publishing_date UNIX_TIMESTAMP())' – Gadget