这基本上是从1月15日和16日末分解的提取物.
MySQL有一个很好的简单函数“Last_Day()”,它返回给定月份的最后一天
select
CONCAT( DATE_FORMAT(`date`, '%b %Y Day ' ),
case when dayofmonth( `date` ) < 16
then '01-15'
else CONCAT( '16-', right( last_day( `date` ), 2) )
end ) as CharMonth,
sum( price ) as TotalPrice
from
invoice
group by
CharMonth
order by
year( `date` ),
month( `date` ),
min( dayofmonth( `date` ))
以上将展示一个例子
CharOfMonth TotalPrice
Dec 2011 Day 01-15 226.98
Dec 2011 Day 16-31 108.12
Jan 2012 Day 01-15 983.08
Jan 2012 Day 16-31 235.02
Feb 2012 Day 01-15 271.29
Feb 2012 Day 16-29 382.91
Mar 2012 Day 01-15 900.28
在这个示例中,跨越一年的订单的目的是确保2012年之前的所有2011年.随后,我不希望在“Jan”之前出现“Feb”的alpha顺序的月份,甚至是01-15和16- ??可以换成顺序,所以我明确地按每个组内的年(),月()和最小日排序…即:强制组内最低日数据…即:1-15 vs 16 to随你…