簡體   English   中英

MS SQL轉換日期103的訂購問題

[英]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

但是,當我使用101102格式時,結果是正確的,並且日期順序正確。

您可以按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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM