2013-10-07 120 views
0

以我SQL存储过程:将数据类型datetime转换为smalldatetime的SQL错误?

@StartDate as smalldatetime, 
@EndDate as smalldatetime 

以我的C#代码:

StartDate = new DateTime(1901,01,01,00,00,00); 
EndDate = new DateTime(2200,01,01,00,00,00); 

var StartDate2 = StartDate.ToString("dd/MM/yyyy HH:mm:ss"); 
StartDate2 = DateTime.ParseExact(StartDate2, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture).ToString("dd/MM/yyyy HH:mm:ss"); 
StartDate = Convert.ToDateTime(StartDate2); 

var EndDate2 = EndDate.ToString("dd/MM/yyyy HH:mm:ss"); 
EndDate2 = DateTime.ParseExact(EndDate2, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture).ToString("dd/MM/yyyy HH:mm:ss"); 
EndDate = Convert.ToDateTime(EndDate2); 

列是如在分贝一个SMALLDATETIME类型。我正在围绕着这个圈子走!什么是正确的方式来解析我的日期正确的格式查询数据库?

更新: 已更改的代码,并工作正常。

SqlParameter parameter = daHoliday.SelectCommand.Parameters.Add("@StartDate", System.Data.SqlDbType.SmallDateTime); 
SqlParameter parameter2 = daHoliday.SelectCommand.Parameters.Add("@EndDate", System.Data.SqlDbType.SmallDateTime); 
parameter.Value = StartDate; 
parameter2.Value = EndDate; 
+2

不要将它们转换为字符串,只需通过命令参数将它们作为'DateTime'类型对象传递即可。 – user2711965

+0

这样做,谢谢!更新代码以反映! – PeteTheGreek

+0

请只回答你自己的问题,然后在两天内你可以接受它。它将清理此问题的工作流程。 –

回答

0

不要将它们转换为字符串,只是将它们作为通过命令参数DateTime类型的对象。

DateTime不应转换为字符串以匹配数据库表中的数据格式。如果表中的数据类型为DateTime,则始终最好将.Net框架DateTime对象作为参数传递给命令。

相关问题