仅在mysql的varchar列中按日期分组

时间:2014-07-19 12:30:26

标签: mysql datetime group-by varchar

我有一个mysql列,其中数据存储为VARCHAR,尽管数据值为datetime,格式为yyyy-mm-dd hh:mm:ss。 现在我的任务是按日期部分分组,即yyyy-mm-ddVARCHAR转换为日期时间,然后将日期部分从中取出

QUERY

SELECT SUM(value) 
FROM table 
GROUP BY name , [date part of the varchar field]

如果可能的话,请告诉我,如果有,请怎么做?

2 个答案:

答案 0 :(得分:2)

假设您的varchar字段中的数据格式正确,您可以使用left函数,如下所示:

SELECT LEFT(mydate, 10) AS myval, 
       SUM(myvalue)
FROM   mytable
GROUP BY myval;

如果这不是一个大问题;我建议您将varchar列转换为datetimetimestamp。如果不仅仅是为了更好的数据storage usage,那么使用date and time related functions会更容易。

答案 1 :(得分:1)

只需使用left功能即可。您可以将date保留为字符串:

SELECT left(datecol, 10) as YYYYMMDD, SUM(value)
FROM table
GROUP BY left(datecol, 10);

我从name删除了group by,因为它似乎与问题无关。当然,您可以将其添加回来。

顺便说一句,MySQL了解日期的这种格式,所以如果你真的,真的想要一个日期:

SELECT date(left(datecol, 10)) as RealDate, SUM(value)
FROM table
GROUP BY RealDate;