2012-04-13 117 views
0

我有一个表“ABC”在哪里存储具有多个记录时间戳让想SQL查询应该返回至少两天记录

1334034000 Date:10-April-2012 
1334126289 Date:11-April-2012 
1334291399 Date:13-April-2012 

我想建立一个SQL查询在哪里可以找到在第一次尝试记录具有最后两天的值,并且在接下来的两天中第二次记录。 。 。

例子:

Select *,dayofmonth(FROM_UNIXTIME(i_created)) from notes 
where dayofmonth(FROM_UNIXTIME(i_created)) > dayofmonth(FROM_UNIXTIME(i_created)) -2 
order by dayofmonth(FROM_UNIXTIME(i_created)) 

这个查询返回的所有记录日期明智的,但是我们需要很大部分2天记录。

请相应提出建议。 在此先感谢

编辑:

如果今天是4月13日,我们的表有最大10天,9%,8。 。 。四月那么我们必须拿出10,4月9日,他的最后日期记录

+0

所以只是可以肯定的,你行的每一个都有一个时间戳,告诉该行的创建日期,对吧? – Adi 2012-04-13 05:14:55

+0

是的,但是日期并不确定在过去两天中是否与之相同。 :) – Suleman 2012-04-13 05:18:05

+1

对不起,我没有理解“是”后的所有内容,请您重新说明一下吗? – Adi 2012-04-13 05:19:10

回答

2

结束尝试此查询 -

SELECT t1.* FROM table t1 
    JOIN (SELECT date FROM table GROUP BY date DESC LIMIT 2) t2 
    ON t1.date = t2.date 

它会显示与日期的所有记录= '11-April-2012'和'13-April-2012'。

这是你想要的吗?


编辑:

SELECT 
    t1.*, t2.date 
FROM 
    notes t1 
JOIN (SELECT 
     DATE(FROM_UNIXTIME(i_created)) date 
     FROM 
     notes 
     GROUP BY 
     date DESC 
     LIMIT 
     2 
) t2 
ON 
    DATE(FROM_UNIXTIME(t1.i_created)) = t2.date 
+0

让我试试吧。 – Suleman 2012-04-13 05:56:22

+0

因此它变成----- SELECT t1。*,dayofmonth(FROM_UNIXTIME(t1.i_created))FROM注释t1 JOIN(SELECT *,dayofmonth(FROM_UNIXTIME(i_created))FROM笔记GROUP BY dayofmonth(FROM_UNIXTIME(i_created)) DESC LIMIT 2)t2 ON t1.dayofmonth(FROM_UNIXTIME(t1.i_created))= t2.dayofmonth(FROM_UNIXTIME(t2.i_created))但不能工作 – Suleman 2012-04-13 05:58:39

0

添加limit 2到您的查询

+0

他不会将结果数量限制为两个项目,而是将结果数量限制在最近两天内的项目中。 – Michelle 2012-04-13 05:14:02

+0

啊,我很难理解这个问题。 – kjones 2012-04-13 05:17:51

+0

@ kjones:完全不是两个记录,但有最近的两个日期! – Suleman 2012-04-13 05:19:42