MySQL组按天求和

MySQL组按天求和,mysql,sql,Mysql,Sql,我有一张桌子 id int pk auto_inc | created int(11) | amount int | user_id int 我想创建一个按天分组的行列表,总计金额字段 我试过这个: SELECT created, sum(amount) as amount, id FROM total_log WHERE user_id = $this->user_id GROUP BY DAY(created) 这不会给出正确的结果。他们被分成一行 日期从dd/mm/yyyy格式保

我有一张桌子

id int pk auto_inc | created int(11) | amount int | user_id int
我想创建一个按天分组的行列表,总计金额字段

我试过这个:

SELECT created, sum(amount) as amount, id FROM total_log WHERE user_id = $this->user_id GROUP BY DAY(created)
这不会给出正确的结果。他们被分成一行


日期从dd/mm/yyyy格式保存到unix时间戳,如1349046000

MySQL不喜欢混合
day
int
列:

mysql> select day(1349046000);
+-----------------+
| day(1349046000) |
+-----------------+
|            NULL |
+-----------------+
1 row in set, 1 warning (0.00 sec)

mysql> show warnings;
+---------+------+----------------------------------------+
| Level   | Code | Message                                |
+---------+------+----------------------------------------+
| Warning | 1292 | Incorrect datetime value: '1349046000' |
+---------+------+----------------------------------------+
1 row in set (0.00 sec)
因此,所有行的
day(一些int值)
都将为
NULL
,并且它们都将在同一组中

我建议对该列使用
date
datetime
类型

另外,在
select
语句中不应引用
group by
子句中的列,除非对它们使用了聚合函数。

try

SELECT 
    DATE(FROM_UNIXTIME(created)) as d, 
    sum(amount) as amount
FROM total_log 
WHERE user_id = $this->user_id 
GROUP BY d

是否应该有多行?您有
其中user\u id=$this->user\u id
。这让我觉得即使在结果集分组之前,也只有一行。woops忘记提到用户id。不,同一个用户有多条记录。这是正确的查询吗?它不会在sql server中编译事件。Select子句引用了GROUPBY子句中使用的“created”和“id”列(day(created)与这些术语中的created有所不同)。@Dooh--mysql允许使用它。很遗憾,您正在尝试DATE(从_UNIXTIME(created))吗?
SELECT 
DAY(DATE(FROM_UNIXTIME(created))), 
sum(amount) as amount 
FROM total_log 
WHERE user_id = $this->user_id 
GROUP BY DAY(DATE(FROM_UNIXTIME(created)))