当我的列在 Sql Server 2017 和 C# 中键入字符串时如何按日期排序?

How to Order by date when my Column is type String in Sql Server 2017 and C#?

我想在我的数据库中按日期排序,但我做不到,因为它给我一个错误。我正在使用 SQL Server 2017。

我已经阅读了其他关于它的文章,但是当我尝试时它仍然给我同样的错误。

我的 table 名称是 "Ferramentas",我的专栏名称是 "DataCriacao"。我试过这个:

 Select * From Ferramentas order By CONVERT(date, Data_Criação,101) Desc

我也试过:

 Select * From Ferramentas Order By Cast(Data_Criação As Date) Desc

错误是:

Conversion failed when converting date and/or time from character string

在我的数据库中 "Data_Criacao" 类型是 nchar(20).

我的日期类似于“2018 年 12 月 5 日”

我的 SQL 服务器和 C# 代码需要这个,因为我正在做一个应用程序,有些数据格式不正确,我无法更改,我只能调整我的代码以适应这个。

你能帮帮我吗?

不清楚格式是 103 还是 101。假设您的日期是 mm/dd/yyyy.

最好的猜测是并非所有日期都采用该格式。所以,使用 try_convert():

order By try_convert(date, Data_Criação, 101) desc

要查找有问题的值,请编写如下查询:

select Data_Criação
from Ferramentas
where try_convert(date, Data_Criação, 101) is null;

在此过程中,考虑如何修复您的数据模型,以便使用正确的类型存储值。