2016-12-05 77 views
-2

我有一列ifd0_DateTime,在名爲photo的表中,其中包含以下格式的日期時間:1966:12:22 17:19:57。 我需要計算每年明智的照片數量。以正確的格式從SQL查詢獲取日期時間

到目前爲止,我有這個查詢。但它不能正常工作。

SELECT ifd0_DateTime, count(*) FROM photo group by YEAR(ifd0_DateTime), MONTH(ifd0_DateTime);

任何人都可以請解決這一問題?

+0

您的查詢如何不起作用? –

+0

我稍後修復它。 – piyush121

+0

爲什麼downvotes?我應該刪除這個問題嗎? – piyush121

回答

2
SELECT STR_TO_DATE(LEFT(ifd0_DateTime, 7), '%Y:%m'), 
     COUNT(*) AS dateCnt 
FROM photo 
GROUP BY STR_TO_DATE(LEFT(ifd0_DateTime, 7), '%Y:%m') 
+0

錯誤代碼:1582.調用本地函數'STR_TO_DATE'時參數計數不正確 – piyush121

+0

@ piyush121缺少逗號。 –

+0

完美地工作。你也可以得到我的投票! – piyush121

1

代替date選擇YearMonth

試試這個

SELECT YEAR(ifd0_DateTime), MONTH(ifd0_DateTime), count(*) 
FROM photo 
group by YEAR(ifd0_DateTime), MONTH(ifd0_DateTime) 
+0

任何downvote的原因:/ –

0
SELECT YEAR(ifd0_DateTime), MONTH(ifd0_DateTime), count(*) FROM photo 
group by YEAR(ifd0_DateTime), MONTH(ifd0_DateTime); 

你的意思是?

1

存儲日期時間的正確方法是使用內置數據類型。但是,它看起來像是將值存儲爲字符串。如果是這樣,你只想要前7個字符:

SELECT LEFT(ifd0_DateTime, 7) as yyyymm, count(*) 
FROM photo 
GROUP BY LEFT(ifd0_DateTime, 7) 
ORDER BY yyyymm; 

但是,你真的應該修復數據。

+0

失敗的可怕。它已經是日期時間格式了。 – piyush121

+2

@ piyush121。 。 。鑑於你*接受了*在數值上使用'LEFT()'的答案,很難相信它已經處於「日期時間格式」。你明白字符串和'datetime'之間的區別嗎?如果它是'datetime',你爲什麼接受一個把它當作字符串的答案? –

+0

我可能是錯的。我以爲你問的是,如果它是一個有效的日期時間。但是你的查詢給出了模糊的結果。 – piyush121