2017-06-08 78 views
0

我想在mysql中做兩列計數。其中一列是一個字符串,但另一個是像06/08/2017的日期,當我做我的查詢時,我得到0結果。我怎樣才能在mysql中做兩列的計數?

SELECT count(*) FROM `castigos` WHERE inicio_normal=05/06/2017 AND cod_emplazamiento=1

我有一個數據項,但其不要告訴我任何事情。也許日期中的數據類型是錯誤的?

我該怎麼辦? enter image description here

回答

0

將日期字段添加到您的選擇和分組中。否則,mysql擴展不能識別你想按日期分組,並將所有結果聚合成1列。而且,因爲你得到0計數,所以你是where子句不能工作的地方。

您的日期格式似乎格式不正確。通常爲YYYY/MM/DD格式(標準格式); 或指定使用SELECT STR_TO_DATE('17/09/2010','%d/%m/%Y');

MySQL retrieves and displays DATE values in 'YYYY-MM-DD' format. The supported range is '1000-01-01' to '9999-12-31'.

下面的格式使用隱式轉換和默認的日期格式字符串日期轉換爲有效日期。

SELECT inicio_normal, count(*) 
FROM `castigos` 
WHERE inicio_normal='2017/05/06' 
    AND cod_emplazamiento=1 
GROUP BY inicio_normal 

否則它將數學計算並將該日期與該日期存儲的數字進行比較。

理解日期應該存儲在日期數據類型中,並且當您查詢日期時,您正在將字符串轉換爲日期數據類型進行比較。所以你需要使用標準格式,或者將字符串強制轉換爲日期,以便數據庫引擎知道如何將格式轉換爲日期。

0

試試這個:

SELECT count(*) FROM `castigos` WHERE inicio_normal="05/06/2017" AND cod_emplazamiento=1 GROUP BY inicio_normal 
+0

需要處理的事實,即mySQL將只返回1行,因爲沒有分組。預期結果顯示數據中每個日期的計數。 – xQbert

+0

是的,你正在寫...編輯我的答案。 –

0

WHERE inicio_normal爲05/06/2017年

如果您除以6 3,那麼2017年你會得到一個非常小的值的確。 OTOH如果您reformat this as a date(例如20170605,如果您給了我們歐洲格式化日期 - dd/mm/yyyy),那麼您的查詢將查找您向我們顯示的行。