[英]MS SQL convert date 103 ordering problem
我正在嘗試將此格式的Datetime從29/07/2011 00:00:00轉換為2011年7月29日。 我使用SELECT語句執行此操作
SELECT CONVERT(nvarchar(10), thisDate, 103) As thisDate ... ORDER BY thisDate
這給出了這樣的順序
01/08/2011
02/08/2011
05/06/2011
08/07/2011
14/07/2011
21/06/2010
21/07/2011
23/07/2011
24/07/2011
24/07/2011
但是,當我使用101
或102
格式時,結果是正確的,並且日期順序正確。
您可以按DATETIME類型的字段排序。 在您的示例中,您需要重命名別名:
SELECT CONVERT(nvarchar(10), thisDate, 103) As thatDate ... ORDER BY thisDate
不要將日期時間轉換為字符串-根據客戶端設置,出於顯示目的的轉換應在客戶端進行。 要訂購結果集,您應該直接使用日期字段,而無需轉換它,這只會浪費資源。
102
樣式“有效”,因為它將日期格式設置為“ yy.mm.dd”,從而“正確”排序(可以根據與日期相同的規則以字符串形式訂購)。 112
(“ yyyymmdd”)和其他一些代碼也是如此,但是101
不能按您期望的那樣工作(美國格式為“ mm / dd / yyyy”)。
您的解決方案無法正常工作,因為SQL Server嘗試基於按字母順序而不是按日期排序的文本字符串進行排序。
嘗試對您的查詢執行此操作:
SELECT CONVERT(nvarchar(10), thisDate, 103) As newDate, thisDate
FROM YourTable
ORDER BY thisDate ASC
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.