我有一个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日。
我不确定如何比较以获取最新数据?任何建议
答案 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