C# 将varchar数据类型转换为datetime数据类型导致值超出范围

C# 将varchar数据类型转换为datetime数据类型导致值超出范围,c#,winforms,C#,Winforms,我收到以下错误“将varchar数据类型转换为datetime数据类型导致值超出范围”。日期格式为“DD/MM/YY” 第一件事是不要将日期作为字符串传入。在c#中解析它(DateTime.Parse或类似内容,可能指定格式和区域性),并将其作为参数传递。在'“+date\u push+'”的所有位置,请改用@parameter 下一步是将b.datepushed存储为datetime——不需要在b.datepushed上使用convert。如果它是一个字符串,那么您就做错了 之后,您将比较da

我收到以下错误“将varchar数据类型转换为datetime数据类型导致值超出范围”。日期格式为“DD/MM/YY”


第一件事是不要将
日期作为字符串传入
。在c#中解析它(
DateTime.Parse
或类似内容,可能指定格式和区域性),并将其作为参数传递。在
'“+date\u push+'”
的所有位置,请改用
@parameter

下一步是将
b.datepushed
存储为
datetime
——不需要在
b.datepushed
上使用
convert
。如果它是一个字符串,那么您就做错了

之后,您将比较
datetime
字段和
datetime
参数,该参数将正常工作。例如:

and Convert(DateTime,b.datepushed,103) > CONVERT(varchar,'" + date_pushed + @"' ,103)
变成

and b.datepushed > @date_pushed

其中
b.datepushed
datetime
字段,
@date\u pushed
datetime
参数。当然,您可以将
DATEPART
等与
datetime
一起使用-重要的一点是:它根本不解析任何内容。

第一件事是不要将
推送的日期作为字符串传递。在c#中解析它(
DateTime.Parse
或类似内容,可能指定格式和区域性),并将其作为参数传递。在
'“+date\u push+'”
的所有位置,请改用
@parameter

下一步是将
b.datepushed
存储为
datetime
——不需要在
b.datepushed
上使用
convert
。如果它是一个字符串,那么您就做错了

之后,您将比较
datetime
字段和
datetime
参数,该参数将正常工作。例如:

and Convert(DateTime,b.datepushed,103) > CONVERT(varchar,'" + date_pushed + @"' ,103)
变成

and b.datepushed > @date_pushed

其中
b.datepushed
datetime
字段,
@date\u pushed
datetime
参数。当然,您可以将
DATEPART
etc与
datetime
一起使用-重要的一点是:它根本没有解析任何内容。

其中一些肯定失败了,因此请查看实际值:

Convert(datetime,a.DOB,103) as DOB,
Convert(datetime,a.DOI,103) as DOI,
Convert(datetime,b.datepushed,103) as datepushed 

其中一些肯定失败了,因此请查看实际值:

Convert(datetime,a.DOB,103) as DOB,
Convert(datetime,a.DOI,103) as DOI,
Convert(datetime,b.datepushed,103) as datepushed 

我假设您使用SQL Server

SQL Server中的有效日期时间范围为1753年1月1日至9999年12月31日,如上所述


我建议您查看所有
convert(datetime,…)
语句,以查找超出此范围的值。

我假设您使用的是SQL Server

SQL Server中的有效日期时间范围为1753年1月1日至9999年12月31日,如上所述


我建议您查看所有
convert(datetime,…)
语句,以查找超出此范围的值。

您认为我们应该如何处理这一混乱局面?@Arion这应该更好,但我同意——OP不应该将其“代码”提供给其他人。它的格式太糟糕了。@Matten:很好,你当时过来了:P你认为我们应该怎么处理这个烂摊子?@Arion这应该更好,但我同意——OP不应该把他的“代码”给别人。“格式太糟糕了。@Matten:很高兴你当时过来了:PInteresting!似乎这就是为什么他们把它放在瓦尔查尔区(也许:)@V4Vendetta-也许:)。如果出于某种原因,您需要表示超出SQL允许范围的日期,那么最好的方法就是用C#解析日期,正如Marc Gravell在回答中所建议的那样。很有趣!似乎这就是为什么他们把它放在瓦尔查尔区(也许:)@V4Vendetta-也许:)。如果出于某种原因,您需要表示超出SQL允许范围的日期,那么最好的方法是按照Marc Gravell在回答中的建议,用C#解析日期。@Marc_在回答了太多关于日期格式的问题后,是否有一个我们都可以链接为重复的规范答案?一个例子有400张选票,这样我们就可以避免评论中的争论了?@marc_s在回答了太多关于日期格式的问题后——有没有一个我们都可以链接到的标准答案是重复的?一个有400票的eg,这样我们就可以避免评论中的争论了?