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

标签 php mysql sql mysql-workbench daterangepicker

此查询在 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';

但是,当我想传递变量来代替 80 和日期范围作为变量时,它不会给出任何结果。查询是-

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"]."'"

当我用 PHP 编写代码时,此查询没有给出任何结果。

最佳答案

您应该在 where 子句中进行日期过滤,而不是使用having:

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

关于php - MySQL查询使用日期范围获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52179843/

相关文章:

php - 通过 PHP cURL 使用 login.microsoftonline.com 进行身份验证(SSL 连接错误)

MySQL的alter table查询非常慢

mysql - 根据另一个表中的值在一个表中最多选择 3 个不同的字段?

sql - 如何使用 iconv 将存储为 LATIN1 ( sql ) 的 Cyrillic 转换为真正的 UTF8 Cyrillic?

sql - SQL插入SQLRPGLE后无法更新文件

php - 检测 MySQL 数据库中更新的行是否已更改

php - 如何替换php中除下划线和句点以外的所有特殊字符?

php - MySQL 上的 LIMIT 关键字与准备好的语句

mysql - SQL 'COUNT' 函数不工作

php - 想要使用外键关系获取 Laravel 中当前登录用户的数据,但给出重复的行