2012-03-12 92 views
0

我正在運行一個查詢,以獲取當前()的今天活動,並將它與過去5天中的活動進行比較。MySql date_add()查詢改進

select count(*) ,date(timestamp) date , now() now 
from activitylog 
where timestamp>date_add(now(), INTERVAL -5 DAY) and 
     hour(timestamp) <=hour(now()) 
group by date(timestamp) 
order by date(timestamp) desc; 

有沒有比上述方式更有效的方法嗎?

+2

你可以發表表格的結構嗎? – 2012-03-12 15:11:26

回答

1

正如所寫的,查詢將返回當天的活動,直到當前日期和前4天的當前小時,再加上當前小時的活動僅在五天前 - 使其包括當前的整個一天第五日,小時,where子句更改爲:

where timestamp>date(date_add(now(), INTERVAL -5 DAY)) and 
     hour(timestamp) <=hour(now()) 
從這個

除此之外,我能想到的唯一的問題是,以檢查是否有在時間戳列的索引。否則,它似乎處於最佳狀態。

+0

我真的希望有一種方式只使用1,即在哪裏時間戳(date_add(SOME_MAGIC_HERE)),並取消和小時(時間戳... – artfullyContrived 2012-03-12 16:09:05

+0

@artfullyContrived:如果你想排除當前小時後的數據在過去的5天內 – 2012-03-12 16:15:35

+0

謝謝。讓我們繼續打開一天,以防其他一些mysql大師提出一些神奇的東西。 – artfullyContrived 2012-03-13 09:39:11