Mysql GROUP BY DATE from text column

时间:2015-11-27 17:06:23

标签: mysql sql date select

我有一个带有文本列的数据库,它将日期和时间存储为DD / MM / YYYY HH:MM:SS(例如:27-11-2015 17:01:53)。

现在我想用PHP制作一些统计数据,但我无法解决日期问题。

尽管创造了一小时,我想计算当天(DD / MM / YYYY)的所有结果。

我已经尝试了很多解决方案,但都没有。

最好的尝试就是这个,但是我给了NULL作为日期:

SELECT STR_TO_DATE(DATECOLUMN, '%d/%m/%Y'), COUNT(*) 
FROM TABLE 
GROUP BY STR_TO_DATE(DATECOLUMN, '%d/%m/%Y')

我也希望在间隔中进行搜索,我希望在搜索日期间隔方面提供一些帮助,因为" normal"方式不起作用。使用以下代码不会产生间隔。

WHERE DATE(DATECOLUM) >= DATE(NOW()) - INTERVAL 7 DAY

有人可以帮我解决这个问题吗?谢谢!

2 个答案:

答案 0 :(得分:1)

您可以尝试:

SELECT date_format(str_to_date(DATECOLUMN, '%d/%m/%Y'), '%d/%m/%Y') AS MyDate, COUNT(*)
FROM TABLE 
GROUP BY MyDate

对于间隔和组,您可以尝试:

SELECT COUNT(*), MyDate
FROM TABLE, (
    SELECT date_format(str_to_date(DATECOLUMN, '%d/%m/%Y'), '%d/%m/%Y') AS MyDate
    FROM TABLE) Tmp 
WHERE date_format(str_to_date(MyDate, '%d/%m/%Y'), '%Y-%m-%d') >= NOW() - INTERVAL 7 DAY
GROUP BY MyDate

答案 1 :(得分:0)

那么,

我认为我找到了解决方案并且它的工作非常好。对于那些将来需要它的人:

SELECT DATE_FORMAT(STR_TO_DATE(DATEC_OLUMN , "%d-%m-%Y %H:%i:%S"), "%d/%m/%y") AS date, 
       COUNT(*) 
FROM TABLE_NAME 
GROUP BY DATE_FORMAT(STR_TO_DATE(DATE_COLUMN, "%d-%m-%Y %H:%i:%S"), "%d/%m/%y")

上面的代码会将 DD / MM / YYYY HH:MM:SS中的文本列字符串转换为DD / MM / YYYY ,并将其分组并按日期计算