MySQL连续几天返回错误值

时间:2018-09-08 22:50:44

标签: mysql

我正在尝试从timestamp列中对mysql进行连续计数。我以为我早就解决了这个问题-但由于某些奇怪的原因,它返回了错误的值。

它应该返回一列,其中包含用户名,连续日期列表中具有最高时间值的最小日期和最大连续天数。

除了最多连续几天之外,所有其他方法并不总是正确的。

SELECT username, day1, count(distinct date) days from (
    SELECT t1.username, t1.date, max(tmp.date) day1 from sites_surfed t1
        LEFT JOIN (
            SELECT tmp1.date from sites_surfed tmp1
            LEFT JOIN sites_surfed tmp2
                ON DATE_FORMAT(tmp1.date,'%d/%m/%Y') = DATE_FORMAT(tmp2.date,'%d/%m/%Y')+1
                AND tmp1.username = tmp2.username where (tmp1.username = 'viraladmin') 
                AND (tmp2.date is null))tmp on (t1.date >= tmp.date) where t1.username = 'viraladmin'
                GROUP BY t1.date
   ) fin  
   WEHERE username = 'viraladmin'
       GROUP BY day1 having count(distinct date) > 1 order by days

下面的jsfiddle显示了一个示例,该示例在表列表中只有两个唯一的日期的情况下,仅应返回2时,其连续几天的总返回值为3

http://sqlfiddle.com/#!9/85f6d6/4

这是怎么回事,我该如何解决?

1 个答案:

答案 0 :(得分:1)

我已经改变

.NET framework

GROUP BY t1.date

这似乎有效。

GROUP BY DATE_FORMAT(t1.date,'%d/%m/%Y')