2011-05-11 11 views
30

posts 테이블에 각 게시물 레코드의 타임 스탬프가 저장됩니다.타임 스탬프에서 일별 그룹

이 타임 스탬프 열을 사용하여 일별 게시물을 그룹화 할 수있는 쿼리는 무엇입니까?

답변

48

어때요? DATE 기능을 사용하면 :

SELECT DATE(FROM_UNIXTIME(MyTimestamp)) AS ForDate, 
     COUNT(*) AS NumPosts 
FROM MyPostsTable 
GROUP BY DATE(FROM_UNIXTIME(MyTimestamp)) 
ORDER BY ForDate 

이렇게하면 테이블에 대한 데이터를 가지고 각 날짜에 게시물의 수를 표시합니다.

+0

답이 잘못되었지만 답이 잘못되었습니다. 반환 값은 정확합니다 : DATE (FROM_UNIXTIME (타임 스탬프)) –

+0

편집 된 답변이 정확합니다. 감사합니다. –

+1

@ p.campbell : 각 날짜에 행을 제한하는 방법 ? 예 :'2011-05-11'에 나는 10 개의 게시물이 있고'2011-05-12' 20 개의 게시물에는 각 날짜에'2 개의 게시물 '을 보여주고 싶습니다. 도와 주실 수 있습니까? –

0
SELECT 
    * 
FROM 
(
    SELECT DATE(FROM_UNIXTIME(MyTimestamp)) AS ForDate, 
      ROW_NUMBER() OVER (PARTITION BY DATE(FROM_UNIXTIME(MyTimestamp)) ORDER BY MyTimeStamp) AS PostRowID, 
      * 
    FROM MyPostsTable 
) 
    AS sequenced_daily_posts 
WHERE 
    ForDate = <whatever date(s) you want> 
    AND PostRowID <= 2 
+0

고마워,하지만 내 마지막 코멘트를 참조하십시오 :'나는 단지 각 날짜에 마지막 게시물의 2 표시'이 쿼리는 게시물의 날짜가 2 게시물 –

+0

난 당신이 쿼리를 테스트하고 그것을 반환 구문 오류가'(PARTITION BY DATE (FROM_UNIXTIME (MyTimestamp)))' –

+0

하루에 1 개의 게시물이 있으면 그 날의 게시물이 하나씩 표시됩니다. 하루에 2 개의 게시물이있는 경우 해당 날짜의 두 게시물을 모두 표시합니다. 하루에 3 개 이상의 게시물이있는 경우 해당 날짜의 처음 2 개 게시물 만 표시됩니다. (ORDER BY에 DESC를 추가하여 하루의 마지막 두 게시물을 표시하십시오.) 하루에 2 번이 한도는 백 일이되었는지 여부와 관계없이 반환 된 레코드가 최대 200 개입니다. – MatBailie

24
SELECT DATE(timestamp) AS ForDate, 
     COUNT(*) AS NumPosts 
FROM user_messages 
GROUP BY DATE(timestamp) 
ORDER BY ForDate 

이 나를 발견했다. '2013-03-27 15:46:08'과 같은 타임 스탬프가 있습니다.

+0

This MySQL 5.1.52에서 작동했습니다. 이전 답변의 DATE (FROM_UNIXTIME (MyTimestamp))는 null을 반환했습니다. –

관련 문제