0

我正在尝试返回某个日期范围内商店中的所有记录。但是,如果商店在该日期之后开业,我想使用开业日期。有可能做这样的事情吗?我将 PHP 与 PDO 和 MySQL 一起使用:

select
   store_name,
   daily_sales
from
   mytable
where
   date between (if(open_date > :start_date, open_date, :start_date) and :end_date
4

2 回答 2

0

所以你可以这样做:

select
   store_name,
   daily_sales
from
   mytable
where
   date between (select if(open_date > :start_date, open_date, :start_date)) and :end_date
于 2013-08-07T17:11:56.960 回答
-1

问:有可能做这样的事情吗?

答:是的。

当然,您需要从if. 没有结束括号,即使有,在这种情况下也不需要将该表达式包装在括号中。

有一个潜在的问题需要注意。PDO 文档对此没有明确说明,但我认为您不能在语句中多次使用命名绑定占位符。对于示例语句,您需要为占位符使用三个不同的名称,例如

date BETWEEN IF(open_date > :start_date, open_date, :start_date_2) AND :end_date
                                                               ^^

代码需要为所有三个命名占位符绑定值。

如果代码使用三个位置占位符,则类似于模式。

date BETWEEN IF(open_date > ? , open_date, ?) AND ?
于 2013-08-07T16:27:58.700 回答