2010-01-28 37 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

相关问题