Sql server SQL Server中的按日期排序未正确显示
我想将我的表查看为按日期排序的Sql server SQL Server中的按日期排序未正确显示,sql-server,date,Sql Server,Date,我想将我的表查看为按日期排序的 我已经写了这个命令 select * from companydetails order by date desc 输出: 2013年4月1日30-11-16 30-11-16 29-11-16 28-11-16 27-09-16 27-01-2014 26-11-16 26-07-14 24-02-15 23-09-15 23-03-15 21-10-15 21-01-16 20-08-15 18-11-15 18-03-15 17-08-16 17-0
我已经写了这个命令
select *
from companydetails
order by date desc
输出:
2013年4月1日30-11-16
30-11-16
29-11-16 28-11-16 27-09-16 27-01-2014
26-11-16 26-07-14 24-02-15 23-09-15 23-03-15 21-10-15 21-01-16
20-08-15 18-11-15 18-03-15 17-08-16 17-04-14 16-09-14 15-02-14
15-02-14 15-02-14 15-02-14 15-02-14 15-02-14 15-02-14 14-11-14
14-08-14 12-02-14 12-01-2013 11-03-16 09-10-15 08-12-15 06-01-16
04-01-2013 03-01-14 02-10-15 02-09-14 02-09-14 01-12-15 01-12-14
01-12-14 01-10-15 01-10-15 01-10-14 01-09-15 01-09-15 01-09-14
01-09-14 01-09-14 01-09-14 01-08-15 01-08-14 01-08-14 01-07-15
01-06-15 01-06-15 01-04-2014 01-04-14 01-04-14 01-04-14 01-04-14
01-04-13 01-04-13 01-04-13 01-04-13 01-04-13 01-04-13 01-04-13
01-04-13 01-04-13 01-04-13 01-04-13 01-04-13 01-04-13 01-04-13
01-04-13 01-04-13 01-04-13 01-04-13 01-04-13 01-04-13 01-04-13
01-04-13 01-04-13 01-04-13 01-04-13 01-03-16 01-03-14 01-03-14
01-02-16 01-02-15 01-01-01-15 01-01-15 01-01-01-14空
这不是我需要的,这只是订购日,我在网上搜索了一下,发现了这一点
SELECT *
FROM
companydetails
ORDER BY
CONVERT(DateTime, date,105) DESC
但这是一个错误
从字符串转换日期时间时转换失败
当我选择修改我的表格时,我发现我的上级创建日期为
nvarchar(50)
我现在需要做什么?正如您在评论中提到的,您已经意识到您的日期
字段位于nvarchar
您现在需要关注以下几点:
- 如果是:除非您可以控制所有源代码,否则修改数据库将非常繁琐 <如果没有:考虑将您的代码>日期<代码>字段迁移到<代码>日期时间> /代码>数据类型。
date
字段的数据类型?
- 如果是:
字段中的日期格式不一致。您需要找到它的位置,将其更新为1且仅为1格式(yy-MM-dd或yyyy-MM-dd)或任何对您更合适的格式。然后,您可以将此字段转换为date
数据类型DateTime
- 如果否:即使您的数据是一致的,在安排时也不会遵循日期-时间顺序,而是遵循字母顺序,这有时会在某个地方给您错误的顺序。
因此,要使用此
,您需要先将数据编辑为相同的格式。例如,我可以看到这两条记录不一致:CONVERT(DateTime,date,105)DESC
&01-06-15
01-04-2014
假设您更改了列中的数据,并使其与注释中所述的一致。 然后试试这个:-
SELECT CAST(Column_Name as datetime2(7)) from tablename;
因为用于存储日期时间的数据类型是NVARCHAR。 为此,可以将其转换为日期或日期时间
select * from companydetails order by CAST(date as DATE) desc
根据SQL Server的要求,用于存储的日期格式不一致
从您的输出中:
30-11-16是日期的一种格式。不是以MM-DD-YYYY的格式
01-04-13是另一种格式。尽管现在这是一个有效的格式,但它会将其视为1月4日,而不是4月1日的预期值(我假设)
服务器在30-11-16抛出一个错误,因为它采用的格式是MM-DD-YYYY(但30不是有效月份,因此是您的错误)
因此,您需要遵循这个特定的日期格式,然后使用上面的查询
希望这有帮助。我认为您应该将日期存储为
datetime
而不是varchar
。我知道,但我的上级使用nvarchar存储日期,现在我面临的问题是same@InformationHTI:您的日期格式也不一致。如果我将所有日期都设置为01-02-14这样,那么我可以做我想做的吗?这是哪个版本的sql server?