我有一个mysql列,其中数据存储为VARCHAR
,尽管数据值为datetime
,格式为yyyy-mm-dd hh:mm:ss
。
现在我的任务是按日期部分分组,即yyyy-mm-dd
将VARCHAR
转换为日期时间,然后将日期部分从中取出
QUERY
SELECT SUM(value)
FROM table
GROUP BY name , [date part of the varchar field]
如果可能的话,请告诉我,如果有,请怎么做?
答案 0 :(得分:2)
假设您的varchar
字段中的数据格式正确,您可以使用left
函数,如下所示:
SELECT LEFT(mydate, 10) AS myval,
SUM(myvalue)
FROM mytable
GROUP BY myval;
如果这不是一个大问题;我建议您将varchar
列转换为datetime
或timestamp
。如果不仅仅是为了更好的数据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;