使用Mysql时间数据类型的时间段

时间:2016-05-11 19:44:43

标签: php mysql

我希望查询我的销售表并获得不同收据编号的计数 按小时计算一周中的每一天

每个记录都有一个重复的收据编号,一个只是日期数据类型的字段中的datein,以及时间数据类型中的sepearte时间字段

这是我正在尝试使用的查询

select dayname(datein),dayofweek(datein), 
if(hour(timein) between 9 and 11, count(distinct salenbr),0) as `9-11`,
if(hour(timein) between 11 and 13, count(distinct salenbr),0) as `11-13`,
if(hour(timein) between 13 and 15, count(distinct salenbr),0) as `13-15`,
if(hour(timein) between 15 and 17, count(distinct salenbr),0) as `15-17`,
if(hour(timein) between 17 and 19, count(distinct salenbr),0) as `17-19`,
if(hour(timein) between 19 and 21, count(distinct salenbr),0) as `19-21`
from carmanslive.allsales 
where loccode = 'SF' and exitcode in ('64','65')  
and deptname = 'Photofinishing' 
and datein >=  DATE_SUB(NOW(), INTERVAL 3 MONTH) 
group by dayname(datein),dayofweek(datein) 
order by dayofweek(datein)

但输出错误

<table caption="UnknownTable (7 rows)">
  <thead>
    <tr>
      <th class="col0">dayname(datein)</th>
      <th class="col1">dayofweek(datein)</th>
      <th class="col2">9-11</th>
      <th class="col3">11-13</th>
      <th class="col4">13-15</th>
      <th class="col5">15-17</th>
      <th class="col6">17-19</th>
      <th class="col7">19-21</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td class="col0">Sunday</td>
      <td class="col1">1</td>
      <td class="col2">0</td>
      <td class="col3">118</td>
      <td class="col4">0</td>
      <td class="col5">0</td>
      <td class="col6">0</td>
      <td class="col7">0</td>
    </tr>
    <tr>
      <td class="col0">Monday</td>
      <td class="col1">2</td>
      <td class="col2">0</td>
      <td class="col3">0</td>
      <td class="col4">360</td>
      <td class="col5">360</td>
      <td class="col6">0</td>
      <td class="col7">0</td>
    </tr>
    <tr>
      <td class="col0">Tuesday</td>
      <td class="col1">3</td>
      <td class="col2">0</td>
      <td class="col3">390</td>
      <td class="col4">0</td>
      <td class="col5">0</td>
      <td class="col6">0</td>
      <td class="col7">0</td>
    </tr>
    <tr>
      <td class="col0">Wednesday</td>
      <td class="col1">4</td>
      <td class="col2">480</td>
      <td class="col3">0</td>
      <td class="col4">0</td>
      <td class="col5">0</td>
      <td class="col6">0</td>
      <td class="col7">0</td>
    </tr>
    <tr>
      <td class="col0">Thursday</td>
      <td class="col1">5</td>
      <td class="col2">0</td>
      <td class="col3">0</td>
      <td class="col4">0</td>
      <td class="col5">330</td>
      <td class="col6">0</td>
      <td class="col7">0</td>
    </tr>
    <tr>
      <td class="col0">Friday</td>
      <td class="col1">6</td>
      <td class="col2">0</td>
      <td class="col3">380</td>
      <td class="col4">380</td>
      <td class="col5">0</td>
      <td class="col6">0</td>
      <td class="col7">0</td>
    </tr>
    <tr>
      <td class="col0">Saturday</td>
      <td class="col1">7</td>
      <td class="col2">0</td>
      <td class="col3">0</td>
      <td class="col4">368</td>
      <td class="col5">0</td>
      <td class="col6">0</td>
      <td class="col7">0</td>
    </tr>
  </tbody>
</table>

每列都应该有数据,我已经确认数据存在。

1 个答案:

答案 0 :(得分:0)

我认为你必须将聚合物放在你的if周围。类似的东西:

allowDeferredLocationUpdatesUntilTraveled()