Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server MM-DD-YY通过不按计划工作进行转换和订购_Sql_Sql Server_Sorting_Grid_Sql Order By - Fatal编程技术网

SQL Server MM-DD-YY通过不按计划工作进行转换和订购

SQL Server MM-DD-YY通过不按计划工作进行转换和订购,sql,sql-server,sorting,grid,sql-order-by,Sql,Sql Server,Sorting,Grid,Sql Order By,下面是我的SQL语句,我将到期日转换为“01/02/2019”,它在表中工作 现在,当我按DueDate订购时,首先显示2019年,然后显示2018年,如果我使用ASC,则按月份,而不是按年份 我已经试过了CAST,我只想让它正确排序 CONVERT(VARCHAR, DueDate, 101) 电流输出: 01/24/2019 01/30/2019 02/01/2019 02/01/2019 02/01/2019 02/06/2019 02/07/2019 03/04/2018 03/05/

下面是我的SQL语句,我将到期日转换为“01/02/2019”,它在表中工作

现在,当我按DueDate订购时,首先显示2019年,然后显示2018年,如果我使用ASC,则按月份,而不是按年份

我已经试过了
CAST
,我只想让它正确排序

CONVERT(VARCHAR, DueDate, 101)
电流输出:

01/24/2019
01/30/2019
02/01/2019
02/01/2019
02/01/2019
02/06/2019
02/07/2019
03/04/2018
03/05/2019
08/08/2018
09/04/2018
09/12/2018
09/17/2018
预期产出:

3/4/2018
8/8/2018
9/4/2018
9/12/2018
9/17/2018
1/24/2019
1/30/2019
2/1/2019
2/1/2019
2/1/2019
2/6/2019
2/7/2019
3/5/2019

看起来您的查询正在使用基于字符的数据类型进行排序。如果要显示格式化的日期字符串,但要按日期排序,则可以使用以下方法:

select convert(varchar,DueDate,101) TheDate
from MyTable
order by convert(datetime,DueDate)

根据
DueDate
字段的数据类型,可能不需要进行强制转换。检查表中字段的基础数据类型。

提示:
orderbyduedate
。您正在进行字符串排序,因此它将按照字符串的ascii值正确排序。如Gordon所说,将其作为排序日期。显示查询和表定义。因此,我们可以检查数据类型以及是否有隐藏基列的别名。在按日期列排序时,您仍然可以选择字符串的格式化版本。它们是两个独立的东西
选择convert(varchar,DueDate,101)from table order by DueDate ASC
当@MartinSmith daid给出DDL或表定义时,他指的是
create table
语句,包含所有列和数据类型。