我想將時間戳列表只減少到每天的最後一個時間戳。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