타임 스탬프 목록을 매일에서 마지막 날짜로 줄이려고합니다.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 %를 건너 뛰고 있지만 이유는 확실하지 않습니다. 내가 첫 번째 쿼리 같이 매일에서 단지 마지막 타임 스탬프를 검색 할 수있는 방법
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
:
1409343661
1409170501
1406060101
1401221701
1400271301
1400012101
가 모두 출력을 EXPLAIN :
select
intTimeStamp as day
from
(
select distinct intTimeStamp from TableA order by intTimeStamp desc
) as t2
group by
date(intTimeStamp)
order by
intTimeStamp desc
이
는 출력 , 유닉스 타임 스탬프에서 그것들을 변환 할 필요는 없다.감사합니다.
두 쿼리는 나에게 동일하게 보인다. –
제 사과 - 두 번째 검색어를 업데이트했습니다. – David
. . MySQL은 정수를 날짜로 변환 할 때 매우 이상한 일을합니다. 'from_UnixTime()'이 필요합니다. –