Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 我对过去7天数据的sql查询?如果数据不存在,则甚至获取日期,并显示为0或null_Mysql_Sql_Database_Convert Tz - Fatal编程技术网

Mysql 我对过去7天数据的sql查询?如果数据不存在,则甚至获取日期,并显示为0或null

Mysql 我对过去7天数据的sql查询?如果数据不存在,则甚至获取日期,并显示为0或null,mysql,sql,database,convert-tz,Mysql,Sql,Database,Convert Tz,我用sql Fidldle做了一个演示。 我的桌子有以下几张桌子 displayId | displaytime | campaignId 现在我想要的是为特定的活动ID选择最后7天的条目,我指的是其中的活动ID= 同一日期应该有多个具有相同活动id的条目。因此,我想显示活动id总额及其日期 所以,如果2013-3-8和其他日期有7条记录,那么它会显示如下记录 2013-03-02 | 1 2013-03-03 | 1 2013-03-04 | 0 2013-03-05 | 0 2013-03

我用sql Fidldle做了一个演示。 我的桌子有以下几张桌子

displayId | displaytime | campaignId
现在我想要的是为特定的活动ID选择最后7天的条目,我指的是其中的活动ID= 同一日期应该有多个具有相同活动id的条目。因此,我想显示活动id总额及其日期

所以,如果2013-3-8和其他日期有7条记录,那么它会显示如下记录

2013-03-02 | 1
2013-03-03 | 1
2013-03-04 | 0
2013-03-05 | 0
2013-03-06 | 0
2013-03-07 | 2
2013-03-08 | 7
在下面的查询中,它只显示其计数超过0的日期。。。 例如 我试过的如下..但它只给了我一条在数据库中有条目的记录

 2013-03-08 | 7


SELECT date(a.displayTime) AS `DisplayTime`,
       ifnull(l.TCount,0) AS TCount
FROM a_ad_display AS a
INNER JOIN
  (SELECT count(campaignId) AS TCount,
          displayTime
   FROM a_ad_display
   WHERE CONVERT_TZ(displaytime,'+00:00','-11:00') >= DATE_SUB(CONVERT_TZ(CURDATE(),'+00:00','-11:00') ,INTERVAL 1 DAY)
     AND CONVERT_TZ(displaytime,'+00:00','-11:00') <= CONVERT_TZ(CURDATE(),'+00:00','-11:00')
     AND campaignId = 20747
   GROUP BY DATE(displayTime)) AS l ON date(a.displayTime) = date(l.displayTime)
GROUP BY DATE(a.displayTime)
ORDER BY a.displaytime DESC LIMIT 7
我已经在我的查询中实现了时区,所以如果你能帮助我进行简单的查询,那么就可以了。不要包括转换行


这是我的虚拟实体的链接

如果您使用日期表,您的查询可以简单到:

select dates.fulldate, count(a_ad_display.id)
from dates
left outer join a_ad_display ON dates.fulldate = a_ad_display.displaytime
    [AND <other conditions here>]
where dates.fulldate BETWEEN date_add(curdate(), interval -6 day) AND curdate()
group by dates.fulldate

如果使用日期表,查询可以简单到:

select dates.fulldate, count(a_ad_display.id)
from dates
left outer join a_ad_display ON dates.fulldate = a_ad_display.displaytime
    [AND <other conditions here>]
where dates.fulldate BETWEEN date_add(curdate(), interval -6 day) AND curdate()
group by dates.fulldate

简单!你可以用PHP来完成。首先创建日期数组,如

date = date('Y-m-d'); $date1 = date('Y-m-d', strtotime('-1 days')); $date2 = date('Y-m-d', strtotime('-2 days'));$date3 = date('Y-m-d', strtotime('-3 days'));$date4 = date('Y-m-d', strtotime('-4 days'));$date5 = date('Y-m-d', strtotime('-5 days'));$date6 = date('Y-m-d', strtotime('-6 days')); 
                $dt_arr = array($date6,$date5,$date4,$date3,$date2,$date1,$date);
从今天开始的最后7天,使用foreach并使用foreach中的where date字段运行查询

 foreach ($dt_arr as $value) 
    {
     $qry = mysqli_fetch_array(mysqli_query($link,"select * from table where dt_field = $value"));
       if($qry['value'] == '')
         {
           $valfield = 0;
          $dtfiled = $value;

     }

简单!你可以用PHP来完成。首先创建日期数组,如

date = date('Y-m-d'); $date1 = date('Y-m-d', strtotime('-1 days')); $date2 = date('Y-m-d', strtotime('-2 days'));$date3 = date('Y-m-d', strtotime('-3 days'));$date4 = date('Y-m-d', strtotime('-4 days'));$date5 = date('Y-m-d', strtotime('-5 days'));$date6 = date('Y-m-d', strtotime('-6 days')); 
                $dt_arr = array($date6,$date5,$date4,$date3,$date2,$date1,$date);
从今天开始的最后7天,使用foreach并使用foreach中的where date字段运行查询

 foreach ($dt_arr as $value) 
    {
     $qry = mysqli_fetch_array(mysqli_query($link,"select * from table where dt_field = $value"));
       if($qry['value'] == '')
         {
           $valfield = 0;
          $dtfiled = $value;

     }

是的,您的查询确实有效。但当我设置第二个条件,如where-campaiid=时,它不会显示带有0的日期count@BhavikKama您必须将该条件放在联接条件中,而不是放在外部查询中。@BhavikKama I guest,您已经尝试过并且活动ID=10707。因为它是左连接,所以您应该将null检查添加到cause-campaignId=10707或campaignId为null的位置。德国劳埃德船级社!你能告诉我在join中必须在哪里放置条件吗?@BhavikKama检查小提琴,你会看到我是如何添加日期表的。是的,你的查询确实有效。但当我放置第二个条件(如where-activitid=)时,它不会显示带有0的日期count@BhavikKama您必须将该条件置于联接条件中,不在外部查询中。@BhavikKama I guest,您已经尝试过并且活动ID=10707。因为它是左连接,所以您应该将null检查添加到cause-campaignId=10707或campaignId为null的位置。德国劳埃德船级社!你能告诉我在join中我必须把条件放在哪里吗?@BhavikKama检查小提琴,你会看到我是如何添加日期表的。