MySQL比较日期不会返回结果

时间:2016-10-26 06:10:20

标签: php mysql

我需要一个帮助。我无法使用PHP和MySQL根据某些条件从表中获取值。我在解释下面的表格。

  

db_subcat:

id    subcat_id   sub_name      from_date       to_date
------------------------------------------------------------
1       60          Ram         2016-10-25       2016-10-28
2       60          Ram                                    
3       61          Raj                                 

这里某些行没有from_date and to_date值。我在下面解释我的查询。

$date="2016-10-23";
$sql="select * from db_subcat 
    where from_date <='".$date."' and to_date >= '".$date."' and from_date !='' and to_date !='' 
    group by subcat_id 
    union all select * from db_basic 
    where from_date ='' and to_date ='' 
    group by sucat_id";

这里我的问题是,当表格没有(from_date ='' and to_date ='')(from_date !='' and to_date !='')的条目时,我无法获得价值。这里我需要使用以下所有条件获取值。

1-如果from_date and to_date有值,如果值存在则匹配。

2-如果from_date and to_date具有值或空白,则应获取两个条件值。

3-如果表格没有(from_date ='' and to_date ='')(from_date !='' and to_date !='')的条目。

请帮我解决此问题。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您可能需要使用ISNULL,并且可以将两个查询结合起来:

select * from db_subcat
where ((from_date IS NULL OR from_date ='') AND (to_date IS NULL OR to_date =''))
   OR (from_date <='".$date."' and to_date >= '".$date."') 
group by subcat_id

请注意,此GROUP BY子句在除MySQL之外的所有DBMS中都无效。您不应该使用SELECT *语句执行此操作,始终指定列,并且每列应该在GROUP BY子句中,或者使用围绕它的聚合函数。