加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

php – 在mysql查询中SUM多个日期范围

发布时间:2020-12-11 23:52:35 所属栏目:MySql教程 来源:网络整理
导读:我有一个MySql表Products有三列: Date | Product | Qty 我的目标是每周提取每种产品的数量. 在两个给定日期之间获得SUM很容易: SELECT SUM(qty) FROM products WHERE date = '2010-01-01' AND date 我可以使用以下内容生成Php中的周列表: $today = date('

我有一个MySql表’Products’有三列:

Date | Product | Qty

我的目标是每周提取每种产品的数量.

在两个给定日期之间获得SUM很容易:

SELECT SUM(qty) FROM products WHERE date >= '2010-01-01' AND date < '2011-01-1'

我可以使用以下内容生成Php中的周列表:

$today = date('Y-m-d',strtotime('last week Monday'));
$future = date('Y-m-d',strtotime('+90 days'));

$period = new DatePeriod(
 new DateTime($today),new DateInterval('P7D'),new DateTime($future)
);
foreach ($period as $key => $value) {
    $dates .= $value->format('Y-m-d');
}

是否有按日期分组依据和SUM的MySql查询?或者我会更好地在Php中循环? 最佳答案 >您可以在MySQL中使用Year()Week()函数来获取给定日期的年份和周数. Week()函数将返回从0到53的周数.因此,如果您的数据跨越多年,则需要使用Year()函数.
>但是,您将更有兴趣了解相关周的开始日期和结束日期.这是我们可以使用非常有趣的函数DayOfWeek().它返回给定日期的工作日索引(1 =星期日,2 =星期一,…,7 =星期六)
>我们可以使用工作日指数值和实际日期值来使用Date_Add()函数,以确定给定日期的开始周日期和结束周日期.

尝试以下(如果周从星期日开始):

SELECT 
  DATE_ADD(`date`,INTERVAL(1 - DAYOFWEEK(`date`)) DAY) AS week_start_date,DATE_ADD(`date`,INTERVAL(7 - DAYOFWEEK(`date`)) DAY) AS week_end_date,SUM(qty) 
FROM 
  products 
GROUP BY week_start_date,week_end_date 

如果周从星期一开始,另一个方便的功能是WeekDay().它返回日期的工作日索引(0 =星期一,1 =星期二,… 6 =星期日).

尝试以下(如果周从星期一开始):

SELECT 
  DATE_ADD(`date`,INTERVAL(0 - WEEKDAY(`date`)) DAY) AS week_start_date,INTERVAL(6 - WEEKDAY(`date`)) DAY) AS week_end_date,week_end_date 

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读