2013-03-12 6 views
0

지난 7 일 동안 내 웹 사이트에 제출 된 링크 수를 반환하는 SQL 쿼리를 작성하려고합니다. 지금까지이있다 :날짜순으로 시간 소인 필드 그룹화

SELECT COUNT(`id`) AS `count` 
FROM `links` 
WHERE `created` > NOW() - 86400 
AND `created` < NOW() 

이 작품 하루 동안, 그것은 지난 24 시간에 제출 링크의 수와 count라는 하나 개의 행을 반환합니다. datecount이라는 2 개의 열을 반환하려면 7 행 (매일 1 개)이 필요합니다.

내가 머리를 감당할 수없는 까다로운 부분은 createdtimestamp 열이며 변경하기위한 액세스 권한이 없으므로 작업해야합니다.

편집 : 쿼리에 대한 진행중인 작업 : 그것은 datetime을 반환로 실제로

SELECT DAY(FROM_UNIXTIME(created)) AS day, COUNT(id) count 
FROM links 
GROUP BY DAY(FROM_UNIXTIME(created)) 
LIMIT 7 

답변

2

NOW()가 작동 할 수 없습니다. 또한 7 일 분량의 데이터를 가져 오려면 에서 604800을 뺍니다. 및 time 함수를 FROM_UNIXTIME과 함께 사용할 수 있습니다. 이렇게하면 그룹화가 쉬워집니다. 최적의 열은 datetime 유형이어야합니다.

WHERE created BETWEEN UNIX_TIMESTAMP() - 604800 AND UNIX_TIMESTAMP() 

See the demo

: 당신은 대안 BETWEEN 연산자를 사용할 수 있습니다

SELECT DAY(FROM_UNIXTIME(created)) day, COUNT(id) count 
FROM links 
WHERE created > UNIX_TIMESTAMP() - 604800 AND created < UNIX_TIMESTAMP() 
GROUP BY DAY(FROM_UNIXTIME(created)) 

:

이 뭔가를 갈 것

관련 문제