2017-02-15 133 views
2

我想根據星期數來顯示MySQL中的行數。 假設我們通過jan startdate 2017-1-1和endDate 2017-1-31,那麼totdal天數爲31.我們必須除以7然後它會4周和3天這樣總共5周,所以我必須像這樣顯示如何在mysql月份間拆分兩個日期之間的月份

爲一月

WeekRow 
1 
2 
3 
4 
5 

爲二月

WeekRow 
1 
2 
3 
4 

我想申請查詢,但我無法做到這一點。 我很久沒有面對這個問題,但仍然無法修復。

+0

你想做到這一點使用存儲過程的話,我可以幫你這個 –

+0

是的,我需要在使用SP –

回答

0

下面的代碼正在努力擺脫你的問題。 我已經寫在趕時間碼.....後來我會優化此... 有look..and讓我知道如果你有任何問題,瞭解它...

CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_month_days_split`(in in_start_date datetime , in in_end_date datetime) 
BEGIN 

     declare temp_date datetime; 
     declare temp_date_data int ; 

     drop temporary table if exists temp_split; 
     create temporary table temp_split 
     (
      number bigint not null 
     ); 

     while(in_start_date <= in_end_date) 
     do   
      set temp_date = (select date_add(in_start_date,interval 7 day)); 
      set temp_date_data = (select day(date_add(in_start_date,interval 6 day))); 

      set @temp_last_number = (select number from temp_split order by number desc limit 1); 

      if(temp_date_data % 7) =0 
      Then 
       insert into temp_split(number) 
       select (temp_date_data/7); 



      else 
        insert into temp_split(number)  
        select @temp_last_number+1; 


      end if ; 


      set in_start_date = temp_date ; 

     end while; 

     select * from temp_split; 
END 

通話

call sp_month_days_split('2017-12-01', '2017-12-31'); 
相關問題