2010-01-28 38 views
3

我不確定這是否甚至在MySQL的範圍內是誠實的,或者如果在這裏需要一些php來解析數據。但是,如果是...某種存儲過程可能是必需的。是否有可能將行按照時間戳存儲一天?

我有一個表,存儲行與時間戳和金額。

我的查詢是動態的,將根據用戶提供的日期範圍進行搜索。我想檢索表格中日期範圍內每天的金額的SUM()。 包括0,如果沒有條目某一天

某事的作用...

SELECT 
    CASE 
    WHEN //there are entries present at a given date 
     THEN SUM(amount) 
    ELSE 0 
    END AS amountTotal, 
    //somehow select the day 
    FROM thisTableName T 
    WHERE T.timeStamp BETWEEN '$start' AND '$end' 
    GROUP BY //however I select the day 

這是一個兩個舞伴...
是有辦法選擇返回列的一部分?像在mysql中的某種正則表達式?
有沒有辦法讓沒有行的日期返回0?

+0

*爲返回0 * - 也許某種邏輯來看,如果返回的前一行是超過1天的時間?...我不知道。這可能是不可能的。 – 2010-01-28 19:16:23

+0

這是可能的左連接,下面的迴應中的示例鏈接。 – 2010-01-28 19:21:12

回答

2
select * from thisTableName group by date(created_at); 

在你的情況,這將是更喜歡

SELECT id, count(id) as amountTotal 
FROM thisTableName 
WHERE timeStamp BETWEEN '$start' AND '$end' 
GROUP BY DATE(timeStamp); 

你的問題重複至今:link

+0

非常好。我會如何去迴歸零日期沒有數據的日期? – 2010-01-28 19:12:49

+1

我將其更正爲「日期」,因爲您可能會有'多個月'的查詢。至於沒有數據的日期,這個問題已經得到解答:http://stackoverflow.com/questions/75752/what-is-the-most-straightforward-way-to-pad-empty-dates-in-sql-結果對/ 75928#75928 – 2010-01-28 19:17:21

+0

非常聰明的解決方案!你知道什麼 - 「聲明日期時間」嗎? – 2010-01-28 19:38:41

相關問題