求jfqsrq 是開(kāi)始時(shí)間 jfzzrq? 是結(jié)束時(shí)間
?? 統(tǒng)計(jì)這些時(shí)間? 具體要求是
??? jfqsrq??? ????? ?j fzzrq
?? 2008-1-1???? 2008-3-31
?? 2008-4-1??? 2008 -6-30
?? 2008-8-1??? 2008-9-31
?? 2008 -10-1? 2009-3-31
統(tǒng)計(jì)結(jié)果的應(yīng)為
?? 2008-1-1???? 2008-6-30
?? 2008-8-1??? 2009 - 3-31
?拿上一條數(shù)據(jù)的jfzzrq 和下一條數(shù)據(jù)的jfqsrq 相比 相差一月或是不差就合并起來(lái)
可用程序和sql語(yǔ)句來(lái)實(shí)現(xiàn)
?
?
自己寫(xiě)的程序?qū)崿F(xiàn)
?
1 publicstring GetJfmxBzsj(DataTable dt)2 {3 var result ="";4 if (dt ==null)5 return result;6 elseif (dt.Rows.Count ==1)7 {8 result = GetSfyf(dt.Rows[0]["jfqsrq"].ToString(), dt.Rows[0]["jfzzrq"].ToString());9 }10 else11 {12 int i =0;13 while (true)14 {15 var kssj = Convert.ToDateTime(dt.Rows[i]["jfqsrq"]);16 var jssj = Convert.ToDateTime(dt.Rows[i]["jfzzrq"]);17 for (; i < dt.Rows.Count -1; i++)18 {19 var temp = Convert.ToDateTime(dt.Rows[i +1]["jfqsrq"]);20 //同年的時(shí)候 終止時(shí)間 是下條記錄的起始時(shí)間的上月 則合并 不同年 上年的月份為12 下年為1月 則合并21 if ((jssj.Year == temp.Year && jssj.Month +1== temp.Month) || (jssj.Year +1== temp.Year && jssj.Month ==12&& temp.Month ==1))22 {23 jssj = Convert.ToDateTime(dt.Rows[i +1]["jfzzrq"]);24 }25 else26 {27 result +=""+ GetSfyf(kssj.ToString(), jssj.ToString());28 i = i +1;29 break;30 }31 }32 if (i == dt.Rows.Count -1) //最后一列33 {34 result +=""+ GetSfyf(dt.Rows[i]["jfqsrq"].ToString(), dt.Rows[i]["jfzzrq"].ToString());35 break;36 }37 }38 }39 return result;40 }41 42 43 ///<summary>44 /// 獲取繳費(fèi)月份段45 ///</summary>46 ///<param name="start">開(kāi)始時(shí)間</param>47 ///<param name="end">結(jié)束時(shí)間</param>48 ///<returns></returns>49 publicstring GetSfyf(string start, string end)50 {51 if (start ==""|| end =="")52 return"";53 var s = DateTime.Parse(start);54 var e = DateTime.Parse(end);55 if (s.Year == e.Year && s.Month != e.Month)56 {57 return e.Year.ToString().Trim() +"年"+"("+ s.Month.ToString().Trim() +"-"+ e.Month.ToString().Trim() +")月";58 }59 elseif (s.Year == e.Year && s.Month == e.Month)60 {61 return s.ToString("yyyy年MM月");62 }63 elseif (s.Year != e.Year)64 {65 return s.ToString("yyyy年MM月") +"至"+ e.ToString("yyyy年MM月");66 }67 return"";68 }
時(shí)間查詢問(wèn)題 可程序和sql來(lái)實(shí)現(xiàn)
開(kāi)心每一天1111
2018-12-06 16:28:31