选择所有年份的日期

时间:2014-09-24 08:01:59

标签: php mysql date datetime

我的查询如下:

SELECT * 
FROM produit 
WHERE year(date_commande) = '.$date.'
ORDER BY num_serie_produit desc;

$date = 2014。 但是这个变量可以具有all的值,所以这意味着我需要选择所有产品。 我知道我可以通过这样做第二个查询来解决我的问题:

SELECT * 
FROM produit 
ORDER BY num_serie_produit desc;

但我想知道我是否只能使用一个查询并使用$ date。

我试过这样的事情:

if ($date == "all"){
    $date = '%%';
}

但它没有改变任何东西:/

有可能吗?

2 个答案:

答案 0 :(得分:1)

  

但是这个变量可以具有all的值,

如果$date == "all",则运行不同的查询,不带WHERE子句。

$sql = "SELECT * 
        FROM produit 
        ". ($date == "all" ? "WHERE year(date_commande) = ".$date : "") ."
        ORDER BY num_serie_produit desc;";

我的问题是"是否可以只使用一个查询并使用$ date变量?"

有点儿。只是以不同的方式构造查询(仅当WHERE的值为" all"时才包含$date子句。这可能是解决问题的更好方法,而不是使用SQL IF()语句或其他方式,imho,因为你不需要将更多的函数传递给MySQL,虽然这是一个很小的开销#34;我认为它应该要避免。

答案 1 :(得分:0)

例如:

WHERE "'.$date.'" IN (year(date_commande), "all")