+-
C#-在SQL命令中将字符串作为datetime参数传递
我有下拉组合框绑定到日期字段.

现在,我想使用SqlCommand将组合框中的选定值传递到SQL查询中

我想传递参数&在datetime中添加值.

我尝试了这段代码:

cmd.Parameters.AddWithValue("@Expiry", cmbox.SelectedValue.ToString()); and also try
cmd.Parameters.AddWithValue("@Expiry", cmbExpiryDate.SelectedValue.ToString("MM-dd-yyyy"));

但没有用它会引发转换溢出.我是初学者,请帮助我是窗口形式
我正在使用2005 Studio

组合框的值:
2014年4月28日00:00:00

错误
将表达式转换为数据类型datetime的算术溢出错误.

最佳答案
SQL Server支持多种格式-请参阅 MSDN Books Online on CAST and CONVERT.这些格式中的大多数取决于您所拥有的设置-因此,这些设置有时可能起作用-有时不起作用.

解决此问题的方法是使用SQL Server支持的(略微调整的)ISO-8601日期格式-这种格式始终有效-不管您使用的SQL Server语言和dateformat设置如何.

SQL Server支持ISO-8601 format有两种形式:

> YYYYMMDD,仅显示日期(无时间部分);请注意:没有破折号!,这很重要! YYYY-MM-DD并非独立于SQL Server中的dateformat设置,并且在所有情况下都无法使用!

要么:

>日期和时间的YYYY-MM-DDTHH:MM:SS-在此处注意:此格式带有破折号(但可以省略),并在DATETIME的日期和时间部分之间使用固定的T作为定界符.

这对SQL Server 2000及更高版本有效.

如果使用SQL Server 2008或更高版本以及DATE数据类型(仅DATE-而不是DATETIME!),则实际上也可以使用YYYY-MM-DD格式,并且在SQL Server中的任何设置也可以使用.

不要问我为什么整个主题如此棘手且有些令人困惑-这就是事实.但是使用YYYYMMDD格式,则可以使用任何版本的SQL Server以及SQL Server中的任何语言和日期格式设置.

对于SQL Server 2008及更高版本,建议仅在需要日期部分的情况下使用DATE,在需要日期和时间的情况下使用DATETIME2(n).如果可能,您应该尝试逐步淘汰DATETIME数据类型

点击查看更多相关文章

转载注明原文:C#-在SQL命令中将字符串作为datetime参数传递 - 乐贴网