//按照时间段拼接Sql语句 switch (strPeriod) { case "日": { #region 确定时间周期>日的时间范围 strStart = strToday.Substring(0, 4); strEnd = strToday; if (strUpPeriod == "年") { strStart += "-01-01"; } else if (strUpPeriod == "半年") { //计算当前日期为上半年还是下半年 if (Convert.ToInt32(strToday.Substring(5, 2)) > 6) { strStart += "-07-01"; } else { strStart += "-01-01"; } } else if (strUpPeriod == "季度") { if (Convert.ToInt32(strToday.Substring(5, 2)) > 9) strStart = strToday.Substring(0, 5) + "10-01"; else if (Convert.ToInt32(strToday.Substring(5, 2)) > 6) strStart = strToday.Substring(0, 5) + "07-01"; else if (Convert.ToInt32(strToday.Substring(5, 2)) > 3) strStart = strToday.Substring(0, 5) + "04-01"; else strStart = strToday.Substring(0, 5) + "01-01"; } else if (strUpPeriod == "月") { strStart = strToday.Substring(0, 7) + "-01"; } else if (strUpPeriod == "周") { DateTime dt = DateTime.Now; //当前时间 DateTime startWeek = dt.AddDays(1 - Convert.ToInt32(dt.DayOfWeek.ToString("d"))); //本周周一 strStart = startWeek.ToString("yyyy-MM-dd"); } break; #endregion } case "周": { #region 确定时间周期>周的时间范围 //计算当期日期是第几周 DateTime dtStart; int weekStart = 1; GregorianCalendar gc = new GregorianCalendar(); int weeks = gc.GetWeekOfYear(DateTime.Now, CalendarWeekRule.FirstDay, DayOfWeek.Monday); strEnd = strToday.Substring(0, 4) + "-WK" + weeks.ToString(); if (strUpPeriod == "年") { strStart = strToday.Substring(0, 4) + "-WK1"; } else if (strUpPeriod == "半年") { //计算当前日期为上半年还是下半年 if (Convert.ToInt32(strToday.Substring(5, 2)) <= 6) { strStart = strToday.Substring(0, 4) + "-WK1"; } else { dtStart = Convert.ToDateTime(strToday.Substring(0, 5) + "07-01"); weekStart = dtStart.DayOfYear / 7 + 1; } } else if (strUpPeriod == "季度") { if (Convert.ToInt32(strToday.Substring(5, 2)) > 9) { dtStart = Convert.ToDateTime(strToday.Substring(0, 5) + "10-01"); weekStart = dtStart.DayOfYear / 7 + 1; } else if (Convert.ToInt32(strToday.Substring(5, 2)) > 6) { dtStart = Convert.ToDateTime(strToday.Substring(0, 5) + "07-01"); weekStart = dtStart.DayOfYear / 7 + 1; } else if (Convert.ToInt32(strToday.Substring(5, 2)) > 3) { dtStart = Convert.ToDateTime(strToday.Substring(0, 5) + "04-01"); weekStart = dtStart.DayOfYear / 7 + 1; } else { weekStart = 1; } } else if (strUpPeriod == "月") { dtStart = Convert.ToDateTime(strToday.Substring(0, 8) + "01"); weekStart = dtStart.DayOfYear / 7 + 1; } strStart = strToday.Substring(0, 4) + "-WK" + weekStart.ToString(); break; #endregion } case "月": { #region 确定时间周期>月的时间范围 strEnd = strToday.Substring(0, 7); strStart = strToday.Substring(0, 4); if (strUpPeriod == "年") { strStart += "-01"; } else if (strUpPeriod == "半年") { //计算当前日期为上半年还是下半年 if (Convert.ToInt32(strToday.Substring(5, 2)) > 6) { strStart += "-07"; } else { strStart += "-01"; } } else if (strUpPeriod == "季度") { if (Convert.ToInt32(strToday.Substring(5, 2)) > 9) strStart += "-10"; else if (Convert.ToInt32(strToday.Substring(5, 2)) > 6) strStart += "-07"; else if (Convert.ToInt32(strToday.Substring(5, 2)) > 3) strStart += "-04"; else strStart += "-01"; } break; #endregion } case "季度": { #region 确定时间周期>季度的时间范围 strEnd = strToday.Substring(0, 4); strStart = strToday.Substring(0, 4); if (strUpPeriod == "年") { strStart += "-Q1"; strEnd += "-Q4"; } else if (strUpPeriod == "半年") { //计算当前日期为上半年还是下半年 if (Convert.ToInt32(strToday.Substring(5, 2)) > 6) { strStart += "-Q3"; strEnd += "-Q4"; } else { strStart += "-Q1"; strEnd += "-Q2"; } } break; #endregion } case "半年": { #region 确定时间周期>半年的时间范围 strStart = strToday.Substring(0, 4) + "-H1"; strEnd = strToday.Substring(0, 4) + "-H2"; break; #endregion } default: { break; } }