Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.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
C# 在Sql Server 2017和C中,当我的列是字符串类型时,如何按日期排序?_C#_Sql Server 2017 - Fatal编程技术网

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

C# 在Sql Server 2017和C中,当我的列是字符串类型时,如何按日期排序?,c#,sql-server-2017,C#,Sql Server 2017,我试图在我的数据库中按日期排序,但我不能,因为它给了我一个错误。我正在使用SQL Server 2017 我已经读过其他关于它的文章,但当我尝试时,它仍然会给我同样的错误 我的表名是Ferramentas,列名是DataCriaco。我试过这个: Select * From Ferramentas order By CONVERT(date, Data_Criação,101) Desc 我也试过: Select * From Ferramentas Order By Cast(Data_

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

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

我的表名是Ferramentas,列名是DataCriaco。我试过这个:

 Select * From Ferramentas order By CONVERT(date, Data_Criação,101) Desc
我也试过:

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

从字符串转换日期和/或时间时转换失败

在我的数据库Data_Criacao中,类型为nchar20

我的约会日期大约是2018年12月5日

我需要这个到我的SQL server和C代码,因为我正在做一个应用程序,一些数据的格式不正确,我不能更改,我只是可以使我的代码适应这个


你能帮我吗

目前尚不清楚您想要的格式是103还是101。假设您的日期是mm/dd/yyyy

最好的猜测是并非所有日期都是这种格式。因此,请使用try_convert:

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

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

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

为什么在数据模型中存储日期数据时,data_Criação是varchar?另外,您的标题说您正在使用SQL Server 2008,但是,问题的文本说您正在使用2013。没有SQL Server 2013。你到底在用什么?“打印@@VERSION;”的输出是什么;?首先不要将日期存储为字符串,这样可以避免此类问题。datetime类型的存在是有原因的,但您尚未发布任何复制问题@BráulioJoelson的示例数据。选择日期“2018年5月12日”;不会产生错误。@BráulioJoelson您不是。即使使用DatePicker.value返回的DateTime值,也可以使用客户端的区域设置将其格式化为字符串,并将该字符串存储在数据库中,而不是实际的DateTime值。如果哪怕是一个客户机有不同的区域设置,结果也会混淆并丢失数据。开发人员在他们的机器上使用US格式是很常见的,即使他们的用户不这样做t@BráulioJoelson所有教程中都介绍了正确的方法,即采用value属性提供的DateTime值,使用参数化查询,即无字符串连接,并将其作为日期或DateTime参数传递,最后将其存储在日期字段中考虑到值为2018年5月12日,我猜它是dd/MM/yyyy,因为这将是今天的日期。@Larnu那么以这种随意方式存储日期的应用程序呢?我怀疑Gordon是对的,格式混乱,无法找到真正的日期。@PanagiotisKanavos很可能,我只是在OP给我们的一个样本行上做了假设;在多次请求复制问题的样本数据后…从Ferramentas中选择data_Criaço,其中try_convertdate,data_Criaço,103描述此解决方案case@BráulioJoelson,这是因为它丢弃与模式不匹配的任何值并返回NULL。你仍然需要找到这些价值观是什么,它们为什么存在,以及如何处理它们
select Data_Criação
from Ferramentas
where try_convert(date, Data_Criação, 101) is null;