用于检索最新2周记录的SQL查询

时间:2016-06-29 01:19:21

标签: mysql sql

我有一个CreatedDate数据库存储在Unix纪元时间和其他一些信息。我想要一个查询能够在最后一条记录上检索最新的2周记录。 以下是示例

的一部分
ID   User       Ranking     CreatedDate
-------------------------------------------------------
1   B.Sisko       1        1461136714  
2   B.Sisko       2        1461123378
3   B.Sisko       3        1461123378
4   B.Sisko       3        1461600137
5   K.Janeway     4        1461602181
6   K.Janeway     4        1461603096
7   J.Picard      4        1461603096

最后一条记录CreatedDate是2016年4月25日,所以我希望记录从4月12日到4月25日。

我不确定如何比较以获取最新数据?任何建议

2 个答案:

答案 0 :(得分:3)

最简单的方法可能是从今天起减去两周的日期/时间:

where CreatedDate >= UNIX_TIMESTAMP() - 7*24*60*60

另一种方法是将值转换为日期/时间:

where from_unixtime(CreatedDate) >= date_sub(now(), interval 2 week)

这种方法的优点是更容易与日子保持一致。所以,如果你想要从午夜开始两周:

where from_unixtime(CreatedDate) >= date_sub(curdate(), interval 2 week)

缺点是列上的函数阻止在该列上使用索引。

编辑:

这绝对不是你的问题的措辞。但在这种情况下,你应该使用:

select t.*
from t cross join
     (select from_unixtime(max(CreatedDate)) as maxcd from t) m
where from_unixtime(CreatedDate) >= date_sub(maxcd, interval 2 week);

答案 1 :(得分:0)

这可能看起来很奇怪,但您需要执行两个查询以查找最大日期并关闭14天 - 然后将其用作重新查询表的条件。我使用了ID_NUM,因为ID是Oracle中的保留字,也可能是其他RDBMS。

@Configuration