我正在尝试将日期时间从29/07/2011 00:00:00转换为此格式,仅为29/07/2011。我使用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
格式时,结果是正确的,并且日期是正确排序的。
答案 0 :(得分:2)
您可以按DATETIME类型的字段订购。 在您的示例中,您需要重命名别名:
SELECT CONVERT(nvarchar(10), thisDate, 103) As thatDate ... ORDER BY thisDate
答案 1 :(得分:2)
不要将datetime转换为字符串 - 根据客户端设置,应在客户端进行转换以显示。对于结果集的排序,你应该直接使用日期字段,不需要转换它,这只会浪费资源。
102
样式“有效”,因为它将日期格式化为“yy.mm.dd”,可以“正确”排序(可以按照与日期相同的规则按字符串排序)。 112
(“yyyymmdd”)和其他一些人也是如此,但101
不应该按预期工作(美国格式为“mm / dd / yyyy”)。
答案 2 :(得分:1)
您的解决方案不起作用,因为SQL服务器正在尝试根据按字母顺序排序的文本字符串进行排序,而不是按日期排序。
尝试对您的查询执行此操作:
SELECT CONVERT(nvarchar(10), thisDate, 103) As newDate, thisDate
FROM YourTable
ORDER BY thisDate ASC