2011-11-11 6 views
0

나는 PHP/SQL 등의 블로그에서 작업하고 있으며 SQL 지식이 너무 뛰어나다 고 생각합니다. 게시물을 만들 때 게시물의 날짜/시간을 UNIX 타임 스탬프 형식으로 저장하는 아카이브 섹션을 만듭니다. 내가 아카이브는 다음과 같이 표시 할 단 :SQL의 유닉스 타임 스탬프 제한

Date  Year Post Count 
-------- ---- ---------- 
November 2011 2 
December 2011 1 

나는 쉽게 얻을 수 있습니다 :

Date  Year Post Count 
-------- ---- ---------- 
November 2011 2 
November 2011 2 
December 2011 1 

당신은 내가 달성하기 위해 노력하고있어 볼 수 있기를 바랍니다. 이에 대한 나의 현재의 SQL 문은 다음과 같습니다

SELECT `post_date` FROM `blog_posts` ORDER BY `post_date` DESC 

PHP는 정렬의 대부분을 처리하고 거기에 내가 PHP에서이를 달성 할 수있는 방법입니다하지만 난 쉬운 방법은 SQL에있을거야.

누군가가 도움을 줄 수 있기를 바랍니다.

+2

? 구문은 DB에 따라 다릅니다. –

답변

1

이 다음에 가까운 것 :

SELECT MONTHNAME(post_date) AS month_col, 
YEAR(post_date) AS year_col, 
COUNT(*) AS num_posts 
FROM blog_posts 
GROUP BY YEAR(post_date), MONTH(post_date) 
ORDER BY year_col, month_col DESC; 

반환합니다 : 당신이 사용하고있는 데이터베이스

December, 2011, 3 
November, 2011, 2 
December, 2010, 1 
+0

고마워요,이 시도합니다! –

+0

예를 들어 주셔서 감사합니다. 'archive_ear', COUNT (*), num_posts에서 archiveMonth, YEAR (FROM_UNIXTIME ('post_date')) SELECT MONTHNAME (FROM_UNIXTIME ('post_date') 'GROUP BY'archiveMonth' ORDER BY'archiveMonth' DESC' 도와 주신 모든 분들께 감사드립니다! –

+0

정확하거나 충분히 가깝다고 생각되면 답변을 수락하십시오. 또한 위에 게시 한 예제 쿼리는 Dec2011과 Dec2012를 동일한 12 월 그룹으로 그룹화하고 COUNT는 잘못 될 것입니다. 그룹화 기준으로 연도를 추가해야합니다. –

0

어떤 SQL을 사용하고 있는지 알 수는 없지만 MySQL 인 경우 다음과 같은 것이 좋습니다.

SELECT post_date, COUNT(*) 
FROM blog_posts 
GROUP BY post_date/86400 
ORDER BY post_date DESC 

86400은 24 * 60 * 60, 하루 중 초 수입니다. MySQL (5.5)를 들어

+0

고마워요 페이지가 이것과 예를 시도합니다 –

관련 문제