选择具有多个更高和更低值的Mysql

时间:2014-11-30 00:00:33

标签: php mysql select

我需要一个基于6个日期,月份,年份的6个值的搜索查询,现在我已经了解了一些仅适用于月份和年份但我无法正常执行的日子。< / p>

例如,如果某人想要从日,月年到月日搜索。 我当前的查询

    //From
    list($fy,$fm,$fd)   = explode ('-', 2013-2-20);
    //to
    list($ty,$tm,$td)   = explode ('-', 2014-9-1);

    $add = " AND 
            ( month >= '".$fm."'
            AND year >='".$fy."') AND ( 
            month <= '".$tm."' 
            AND year <=   '".$ty."'
            ) ";

你可以看到这一天不包括在内,你的时间非常受欢迎。

1 个答案:

答案 0 :(得分:0)

继续你所拥有的。您只需添加day,就像添加monthyear一样:

...
$add = " AND 
        ( month >= '".$fm."'
        AND year >='".$fy."'
        AND day >='".$fd."') AND ( 
        month <= '".$tm."' 
        AND year <=   '".$ty."'
        AND day <=   '".$td."'
        ) ";
...

由于所有项目彼此独立,因此每个项目的文字值的工作量更高/更低。这可能不是你想要的。您需要将字符串'2013-2-20'转换为DATE,然后使用它们。这可以使用str_to_date()完成。例如str_to_date('2013-2-20','%Y-%m-%d')

注意:我知道您无法更改数据库,但为了将来参考,最好为您的数据库添加一个DATE datatype。将它们分成诸如 day month year 等分离的东西并不是一个好的设计。与使用DATE数据类型一样,只需比较日期(以及使用日期的日期函数)就可以轻松找到越来越高的日期:

dateObj1 >= dateObj2 // dateObj1 is at a later date than dateObj2