【发布时间】:2015-11-16 18:11:17
【问题描述】:
我一直在为 DateTimes 和 SQL Server 苦苦挣扎。
即使我已经测试了转换并确认它有效。
string date = "21/12/15 11:45 AM";
DateTime TempDate = DateTime.ParseExact(date, "dd/MM/yy hh:mm tt", CultureInfo.InvariantCulture);
Console.WriteLine(TempDate);
//Returns 2015.12.21. 11:45:00
当我将相同的逻辑应用于 SQL 时,它会显示以下错误:
System.ArgumentException:无法转换为 System.Int32。
参数名称:type ---> System.FormatException:输入字符串格式不正确。
当我使用以下代码时
Command.Parameters.Add("@DateNext", SqlDbType.DateTime);
Command.Parameters["@DateNext"].Value = DateTime.ParseExact(SurDateNext, "dd/MM/yy hh:mm tt", CultureInfo.InvariantCulture);
//Where SurDateNext is the following string "21/12/15 11:45 AM"
我尝试插入值的字段是 DateTime,默认格式为 yyyy-mm-dd hh:mm:ss.000。
我到底做错了什么?
【问题讨论】:
-
出于好奇,如果你执行 DateTime tempDate = DateTime.ParseExact(...) 然后设置参数 Value = tempDate 你会得到什么?
-
什么是“类型”参数?
-
没有名为“type”的参数,我猜它只出现在错误消息中,可能是SqlDbType。
-
您可以发布您的存储过程代码示例吗?看起来参数被定义为错误的类型,所以 SQL 试图隐式转换它并且不能。
-
您确定您的 SQL 期望的是日期时间而不是整数值吗?
标签: c# sql-server date datetime