MYSQL组按时间为非日历日超过一天

时间:2015-03-19 12:10:33

标签: mysql

我希望能够将一些销售分组以获得总数,但是一天是基于前一天晚上18:00:00到17:59:59。

问题是时间只是hh:mm:ss在它自己的列中并且日期是独立的,所以我找到的解决方案不会起作用,因为两列都需要作为一个。

CREATE TABLE IF NOT EXISTS `test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `exported` int(11) NOT NULL,
  `acc` varchar(512) NOT NULL,
  `card` varchar(512) NOT NULL,
  `transdate` varchar(255) NOT NULL,
  `product` int(11) NOT NULL,
  `qty` decimal(12,2) NOT NULL,
  `total_incl` decimal(12,2) NOT NULL,
  `time` time NOT NULL,
  `email` varchar(512) NOT NULL,
  `realdate` date NOT NULL,
) 

这是我想用来获得我想要的查询,但我希望它基于时间18:00:00在一个更新到下一个17:59:59。我无法更改表格结构。

SELECT SUM(  `total_incl` ) , LEFT(  `product` , 1 ) AS product,  `realdate` 
FROM  `tbl_opttrans` 
WHERE  `acc` =  ''
GROUP BY LEFT(  `product` , 1 ) ,  `realdate` 

任何帮助都会很棒。

1 个答案:

答案 0 :(得分:0)

从汇总日期开始减去6小时:

SELECT SUM(`total_incl`) , LEFT(`product`, 1) AS product, 
       (case when time >= '18:00:00' then date_add(realdate, interval 1 day)
             else realdate
        end) as realdate
FROM  `tbl_opttrans` 
WHERE  `acc` =  ''
GROUP BY LEFT(`product`, 1),
         (case when time >= '18:00:00' then date_add(realdate, interval 1 day)
               else realdate
          end)