这是我的查询
select op.*,o.customers_name from orders_payment op, ".TABLE_ORDERS. " o where op.orders_id=o.orders_id AND
o.customers_id='".$customers['customers_id']."'
AND op.confirm_payment='1'
AND (received_date BETWEEN '".$fromdate."' AND '".$todate."') order by pay_id desc
我要修改的内容是' payment_date'列过滤器。如果此列为空,请将其替换为' payment_date'否则保持不变。 我尝试了一个转换声明,但没有取得任何成功。 提前谢谢
答案 0 :(得分:2)
一种方法使用case
:
((received_date BETWEEN (case when '".$fromdate."' = '' then pament_date else '".$fromdate."' end) AND '".$todate."') or
(payment_date BETWEEN (case when '".$fromdate."' = '' then pament_date else '".$fromdate."' end) AND '".$todate."')
)
在此过程中,我强烈建议您使用多于SQL字符串的参数。至少,您可以传递NULL
并使用coalesce()
而不是case
。