我想将时间戳列表只减少到每天的最后一个时间戳。SQL选择每一天的最后一个时间戳
我可以使用下面的SQL来拉我正在寻找的时间戳,但我也将它们转换为格式化的日期,我不想这样做。
select
from_unixtime(intTimeStamp) as day
from
(
select distinct intTimeStamp from TableA order by intTimeStamp desc
) as t2
group by
date(day)
order by
intTimeStamp desc
这是输出:
2014-08-29 13:21:01
2014-08-28 13:21:01
2014-08-27 13:21:01
2014-08-26 13:21:01
2014-08-25 13:21:21
2014-08-22 10:11:01
2014-08-21 13:21:01
2014-08-20 13:21:01
[remaining omitted]
这是预期,但我需要在原来的unixtime格式。
但是,简单地删除from_unixtime()函数会产生非常奇怪的行为。它只返回6行,而不是预期的。我注意到,返回的六行中只有一行甚至是当天的最后一个时间戳。它有95%的时间可用时间戳,但我不确定为什么。
select
intTimeStamp as day
from
(
select distinct intTimeStamp from TableA order by intTimeStamp desc
) as t2
group by
date(intTimeStamp)
order by
intTimeStamp desc
这是输出:
1409343661
1409170501
1406060101
1401221701
1400271301
1400012101
两个explain输出:
1 PRIMARY <derived2> ALL 13338 Using temporary; Using filesort
2 DERIVED TableA range PRIMARY 4 10 Using index for group-by; Using temporary; Using filesort
如何从每天只检索最后的时间戳,作为第一个查询,但不必将它们从一个unix时间戳(或至少让它们输出为一个)?
谢谢。
的问题两个查询看起来与我。 – 2014-08-31 21:23:52
我的歉意 - 我已经更新了第二个查询。 – David 2014-08-31 21:26:02
。 。将整数转换为日期时,MySQL会做很奇怪的事情。你需要'from_UnixTime()'。 – 2014-09-01 01:33:49