簡體   English   中英

MySQL查詢按日期分組

[英]MySQL Query Group By Date

我已根據其他帖子嘗試了各種建議但無濟於事。

我有一個帶有Created_Date Key的記錄數據庫方案,而Value將是01/01/2017

我正在嘗試查詢數據庫記錄,以返回每月有多少記錄以及與哪個月相符的返回計數。

有以下幾點

SELECT SQL_NO_CACHE MONTH(`Created_Date`), COUNT(*)
FROM `CRM_Leads`
GROUP BY MONTH(`Created_Date`)

我回來

MONTH(`Created_Date`)   COUNT(*)    
          NULL            872

我也嘗試了以下帖子中的幾乎所有變體

計算一年中每個月的記錄

任何幫助,將不勝感激。

假設您的created_date是一個格式字符串('dd-mm-yyyy'),您應該使用str_to_date將其轉換為日期

SELECT SQL_NO_CACHE MONTH(str_to_date(`Created_Date`, '%d/%m/%Y')), COUNT(*)
FROM `CRM_Leads`
GROUP BY MONTH(str_to_date(`Created_Date`, '%d/%m/%Y'))

只要您將日期/時間信息存儲為字符串,您將很難使用任何日期/時間特定的功能和功能。 如果從MONTH(str_to_date(獲得NULL MONTH(str_to_date( Created_Date , '%d/%m/%Y'))str_to_date不會將字符串轉換為日期,最可能的原因是dmy “pattern”不是corrrect。

你所有關於你的“ 可能是約會的字符串 ”的老我們就是其中一個看起來像這樣: 01/01/2017 現在可能是DD/MM/YYYYMM/DD/YYYY ,我們根據您選擇與我們分享的單一價值無法確定哪一個是正確的。 在數據中查找大於12的任何日值 ,例如17/01/2017 ==> DD/MM/YYYY 01/17/2017 ==> MM/DD/YYYY

一旦你選擇了哪種模式,你的“ 可能是日期的字符串就會出現 ; 在str_to_date()函數中應用該模式。 你想要嘗試一些不同的模式來獲得最好的模式(這些只是你可以嘗試的許多模式中的3個):

# which pattern is best for you?
SELECT Created_Date
     , str_to_date(`Created_Date`, '%d/%m/%Y') "d/m/y"
     , str_to_date(`Created_Date`, '%m/%d/%Y') "m/d/y"
     , str_to_date(`Created_Date`, '%Y-%m-%d') "y-m-d"
FROM `CRM_Leads`

在您選擇最合適的dmy模式以應用於str_to_date函數之前,您將無法通過查詢獲得成功。 請注意,您的數據中可能還有各種模式,在這種情況下,您需要解決更大的問題。

一旦你選擇了哪種模式,你的“ 可能是日期的字符串就會出現 ; 在s tr_to_date()函數中應用該模式,然后通過查詢您的組將起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM