2011-09-21 95 views
1

例如:
指明MyDate數據類型爲nvarchar(20)如何GROUP BY日期,日期的格式類型爲nvarchar

mydate 
------------- 
2011/08/04 10:14:47 
2011/07/20 15:00:00 
2011/07/20 22:15:59 
2011/08/04 13:17:33 

如何例如組最多按日期

mydate 
------------ 
2011/08/04 
2011/07/20 
+2

你使用哪個數據庫系統? –

+0

日期不應該作爲字符串存儲,如果必須將它們作爲字符串存儲,至少要使用明確且可排序的日期格式。最後爲什麼'nvarchar(20)'?它們不會包含任何非ASCII字符。 –

+0

@Martin - 你確定嗎?似乎有可能在阿拉伯語或希伯來語腳本中存在日期... –

回答

3

假設tou're使用SQL Server,試試這個:

SELECT LEFT(date_col,10) AS mydate, COUNT(*) 
FROM your_table 
GROUP BY LEFT(date_col,10); 
0

完全一樣的方式應該這樣做。如果我沒有弄錯,varchar將按照字母順序排序,在這種情況下它是相同的。我也是一個好主意,將數據庫結構更改爲日期而不是char。

+0

我同意你的觀點,但表已設置,不能改變。這就是爲什麼我試圖找到解決方案的原因。感謝您的建議! – AGA

0

在Oracle中,你可以使用下面的例子:

select substr(mydate, 1, 10), count(*) 
    from mytable 
group by substr(mydate, 1, 10) 
+0

謝謝你!我正在使用SQL SERVER〜 – AGA

0

SQL服務器 - 試試這個,

SELECT convert(varchar, getdate(), 111) AS mydate 
FROM yourtable 
GROUP BY convert(varchar, getdate(), 111)