将数据类型日期时间转换为小日期时间的 SQL 时出错

本文关键字:时间 日期 SQL 出错 数据类型 转换 | 更新日期: 2023-09-27 18:34:10

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

该列在数据库中作为小日期时间类型。我用这个绕圈子!将我的日期解析为正确的格式以便在数据库中查询的正确方法是什么?

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

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;

将数据类型日期时间转换为小日期时间的 SQL 时出错

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

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