Browse Source

自定义时间查询 访问量

Administrator 2 years ago
parent
commit
6c98ec0d32

+ 2 - 2
mhotel/src/com/happy/action/IDCAction.java

@@ -250,8 +250,8 @@ public class IDCAction extends ActionSupport implements ServletRequestAware {
         if (!(DateUtil.isDateStr(startTime,true) && DateUtil.isDateStr(endTime,true)))
             throw new RuntimeException("请输入正确的时间");
 
-        if (DateUtil.getDayDiff(startTime,endTime) > 31)
-            throw new RuntimeException("查询天数仅31天之内");
+//        if (DateUtil.getDayDiff(startTime,endTime) > 31)
+//            throw new RuntimeException("查询天数仅31天之内");
 
 
         return userVisitsDao.queryVisitsByDiyTime(startTime,endTime);

+ 30 - 13
mhotel/src/com/happy/dao/impl/UserVisitsDaoImpl.java

@@ -116,21 +116,38 @@ public class UserVisitsDaoImpl implements UserVisitsDao {
     @Override
     public List queryVisitsByDiyTime(String startTime, String endTime)
     {
+        int dayCount = DateUtil.getDayDiff(startTime,endTime);
+        if (dayCount <= 0)
+            throw new RuntimeException("请输入正确的时间区间");
+        StringBuffer positiveStr = new StringBuffer();  // 负
+        StringBuffer negativeStr  = new StringBuffer(); // 正
+        for (int i = 0; i < dayCount; i++) {
+            if (i == 0) {
+                negativeStr.append(" SELECT "+i+" seq ");
+                continue;
+            }
+            negativeStr.append(" UNION ALL SELECT " + i);
+            positiveStr.append(" UNION ALL SELECT -" + i);
+        }
+
+
+
+
         String sqlQuery = "select a.day,IFNULL(b.visitNumber,0) visitNumber from (  " +
                 " SELECT DATE_ADD(DATE_FORMAT('"+startTime+"','%Y-%m-%d'), INTERVAL seq DAY) AS day  " +
-                "  FROM (  " +
-                "      SELECT -1 seq UNION ALL SELECT -2 UNION ALL SELECT -3 UNION ALL SELECT -4 UNION ALL  " +
-                "      SELECT -5 UNION ALL SELECT -6 UNION ALL SELECT -7 UNION ALL SELECT -8 UNION ALL SELECT -9 UNION ALL SELECT -10 UNION ALL  " +
-                "      SELECT -11 UNION ALL SELECT -12 UNION ALL SELECT -13 UNION ALL SELECT -14 UNION ALL SELECT -15 UNION ALL SELECT -16 UNION ALL  " +
-                "      SELECT -17 UNION ALL SELECT -18 UNION ALL SELECT -19 UNION ALL SELECT -20 UNION ALL SELECT -21 UNION ALL SELECT -22 UNION ALL  " +
-                "      SELECT -23 UNION ALL SELECT -24 UNION ALL SELECT -25 UNION ALL SELECT -26 UNION ALL SELECT -27 UNION ALL SELECT -28 UNION ALL  " +
-                "      SELECT -29 UNION ALL SELECT -30 UNION ALL  " +
-                "      SELECT 0  UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL  " +
-                "      SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 10 UNION ALL  " +
-                "      SELECT 11 UNION ALL SELECT 12 UNION ALL SELECT 13 UNION ALL SELECT 14 UNION ALL SELECT 15 UNION ALL SELECT 16 UNION ALL  " +
-                "      SELECT 17 UNION ALL SELECT 18 UNION ALL SELECT 19 UNION ALL SELECT 20 UNION ALL SELECT 21 UNION ALL SELECT 22 UNION ALL  " +
-                "      SELECT 23 UNION ALL SELECT 24 UNION ALL SELECT 25 UNION ALL SELECT 26 UNION ALL SELECT 27 UNION ALL SELECT 28 UNION ALL  " +
-                "      SELECT 29 UNION ALL SELECT 30  " +
+                "  FROM (  " + negativeStr.toString() + positiveStr.toString() +
+//                "      SELECT -1 seq UNION ALL SELECT -2 UNION ALL SELECT -3 UNION ALL SELECT -4 UNION ALL  " +
+//                "      SELECT -5 UNION ALL SELECT -6 UNION ALL SELECT -7 UNION ALL SELECT -8 UNION ALL SELECT -9 UNION ALL SELECT -10 UNION ALL  " +
+//                "      SELECT -11 UNION ALL SELECT -12 UNION ALL SELECT -13 UNION ALL SELECT -14 UNION ALL SELECT -15 UNION ALL SELECT -16 UNION ALL  " +
+//                "      SELECT -17 UNION ALL SELECT -18 UNION ALL SELECT -19 UNION ALL SELECT -20 UNION ALL SELECT -21 UNION ALL SELECT -22 UNION ALL  " +
+//                "      SELECT -23 UNION ALL SELECT -24 UNION ALL SELECT -25 UNION ALL SELECT -26 UNION ALL SELECT -27 UNION ALL SELECT -28 UNION ALL  " +
+//                "      SELECT -29 UNION ALL SELECT -30 UNION ALL  " +
+//                "      SELECT 0  UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL  " +
+//                "      SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 10 UNION ALL  " +
+//                "      SELECT 11 UNION ALL SELECT 12 UNION ALL SELECT 13 UNION ALL SELECT 14 UNION ALL SELECT 15 UNION ALL SELECT 16 UNION ALL  " +
+//                "      SELECT 17 UNION ALL SELECT 18 UNION ALL SELECT 19 UNION ALL SELECT 20 UNION ALL SELECT 21 UNION ALL SELECT 22 UNION ALL  " +
+//                "      SELECT 23 UNION ALL SELECT 24 UNION ALL SELECT 25 UNION ALL SELECT 26 UNION ALL SELECT 27 UNION ALL SELECT 28 UNION ALL  " +
+//                "      SELECT 29 UNION ALL SELECT 30  " +
                 "  ) t   where " +
                 "                DATE_ADD(DATE_FORMAT('"+startTime+"','%Y-%m-%d'), INTERVAL seq DAY) >= DATE_FORMAT('"+ startTime +"','%Y-%m-%d')"+
                 "               AND DATE_ADD(DATE_FORMAT('"+startTime+"','%Y-%m-%d'), INTERVAL seq DAY) <= DATE_FORMAT('"+ endTime +"','%Y-%m-%d')"+