2015-11-27 122 views
1

我有一個DB文本列將存儲日期和時間爲DD/MM/YYYY HH:MM:SS(例如:27-11-2015 17:01:53) 。從文本列的MySQL GROUP BY日期

現在我想用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') 

我想就太總部設在區間的搜索,我想在探求一些幫助的日期間隔此因爲「正常」的方式行不通。使用下面的代碼將無法生成時間間隔。

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

有人可以幫我解決這個問題嗎?謝謝!

+5

修復列以正確的格式存儲日期。當數據庫知道存儲它們的正確方法時,不要使用字符串來存儲值。 –

+0

代碼已經完成。我真的需要在一堆文件中更改我的代碼嗎?有沒有什麼辦法可以做到這一點? – Tiago

+0

您沒有義務使用RDBMS,但看到您似乎想使用一個... – Strawberry

回答

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 
+0

它可以創建一個時間間隔,例如使用新日期(DD/MM/YYYY)來搜索最近7天的時間? – Tiago

+0

@Tiago我添加了另一個查詢 – genespos

+0

由於我的數據信息,我做了一些更改,它就像一個魅力!謝謝! – Tiago

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和意志集團並計它按日期