将数据类型datetime转换为smalldatetime的SQL错误?

时间:2013-10-07 14:38:08

标签: c# sql datetime-format

在我的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);

该列是db中的smalldatetime类型。我带着这个绕圈子走了!有什么正确的方法可以将我的日期解析为在db中查询的正确格式吗?

更新: 将代码更改为此并且工作正常。

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;

1 个答案:

答案 0 :(得分:0)

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

永远不应将

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