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