简体   繁体   English

MySQL查询以使用日期范围获取数据

[英]MySQL query to fetch data using date range

This query is giving correct result in MySql workbench - 该查询在MySql工作台中给出正确的结果-

SELECT tbl_visit_info.visitor_id,tbl_visit_info.retailer_id,tbl_retailer.retailer_shop_name,
  SUM( IF( tbl_visit_info.activity_type = 1 ,1,0)) AS feedback,
SUM( IF( tbl_visit_info.activity_type = 2 ,1,0)) AS promise_order,
SUM( IF( tbl_visit_info.activity_type = 3 ,1,0)) AS stock,
SUM( IF( tbl_visit_info.activity_type = 6 ,1,0)) AS payment,
tbl_visit_info.date as visit_date
FROM tbl_visit_info,tbl_retailer 
where tbl_visit_info.retailer_id=tbl_retailer.retailer_id 
and tbl_visit_info.visitor_id=80
group by visitor_id,retailer_id 
having date_format(tbl_visit_info.date, '%Y-%m-%d') BETWEEN '2018-07-01' AND '2018-09-02';

But, when I want to pass variables in place of 80 and date range as a variable then it is not giving any result. 但是,当我想将变量代替80和日期范围作为变量传递时,则没有任何结果。 Query is- 查询是-

SELECT tbl_visit_info.visitor_id,tbl_visit_info.retailer_id,tbl_retailer.retailer_shop_name,
  SUM( IF( tbl_visit_info.activity_type = 1 ,1,0)) AS feedback,
  SUM( IF( tbl_visit_info.activity_type = 2 ,1,0)) AS promise_order,
  SUM( IF( tbl_visit_info.activity_type = 3 ,1,0)) AS stock,
  SUM( IF( tbl_visit_info.activity_type = 6 ,1,0)) AS payment
  FROM tbl_visit_info,tbl_retailer
  where tbl_visit_info.retailer_id=tbl_retailer.retailer_id
  and tbl_visit_info.visitor_id='".$_GET["sr_id"]."'
  group by visitor_id,retailer_id having date_format(date, '%Y-%m-%d') BETWEEN 
  '".$_GET["start_date"]."' AND '".$_GET["end_date"]."'"

This query is not giving any result when I am writing code in PHP. 当我用PHP编写代码时,此查询没有给出任何结果。

You should date filter in where clause instead of using having: 您应该在where子句中添加日期过滤器,而不要使用以下内容:

SELECT tbl_visit_info.visitor_id,tbl_visit_info.retailer_id,tbl_retailer.retailer_shop_name,
  SUM( IF( tbl_visit_info.activity_type = 1 ,1,0)) AS feedback,
  SUM( IF( tbl_visit_info.activity_type = 2 ,1,0)) AS promise_order,
  SUM( IF( tbl_visit_info.activity_type = 3 ,1,0)) AS stock,
  SUM( IF( tbl_visit_info.activity_type = 6 ,1,0)) AS payment
  FROM tbl_visit_info,tbl_retailer
  where tbl_visit_info.retailer_id=tbl_retailer.retailer_id
  and tbl_visit_info.visitor_id='".$_GET["sr_id"]."' 
  and date_format(date, '%Y-%m-%d') BETWEEN 
  '".$_GET["start_date"]."' AND '".$_GET["end_date"]."'"
  group by visitor_id,retailer_id

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM