我有以下字段的表中的SQL Server 2005數據庫:如何以字符串格式的日期正確地訂購?
id, integer
value, string
create_date, datetime
新的數據不斷被插入到這個表(幾十每天有數千條記錄),因此我使用以下查詢來比較在不同日期已插入了多少數據。
SELECT CONVERT(varchar(10), create_date, 101) as 'Date', COUNT(*) as 'Record Count',
FROM the_table
GROUP BY CONVERT(varchar(10), create_date, 101)
ORDER BY 'Date' desc
該查詢返回的數據看起來像這樣:
12/20/2012 | 48155
12/19/2012 | 87561
12/18/2012 | 71467
然而,今天運行此查詢時,我注意到,與多年值得數據庫中的數據的預期排序沒有工作。相反,今年是在結果集的最頂端的數據,它結束了在底部(省略清晰的記錄)
06/29/2012 | 9987
01/04/2013 | 15768
01/03/2013 | 77586
01/02/2013 | 23566
我明白爲什麼發生這種情況,因爲我格式化日期簡單地說就是一個字符串,並且不能期望sql server將它排序爲除字符串之外的任何內容。但我希望訂購是準確的。我怎樣才能做到這一點? (最近一天總是先出現)
不要。按實際日期排序,然後格式化。 – Oded
@Oded編輯:沒關係,我想我解決了它。這很簡單... – Mansfield
你可以使用'DATEPART'進行分組。 – Oded