我在使用日历控件时遇到问题..我在文本框中获取日期...我必须将其插入数据库..使用 asp.net 和 c#
在我的 Web 应用程序中,字段属性设置为datetime
,在表中,列的数据类型为date
..
我怎样才能做到这一点??
我得到的错误是:
将 varchar 数据类型转换为 datetime 数据类型导致值超出范围。该语句已终止。
有人可以在这方面帮助我吗?
提前致谢
我在使用日历控件时遇到问题..我在文本框中获取日期...我必须将其插入数据库..使用 asp.net 和 c#
在我的 Web 应用程序中,字段属性设置为datetime
,在表中,列的数据类型为date
..
我怎样才能做到这一点??
我得到的错误是:
将 varchar 数据类型转换为 datetime 数据类型导致值超出范围。该语句已终止。
有人可以在这方面帮助我吗?
提前致谢
我得到的错误是:将 varchar 数据类型转换为 datetime 数据类型导致值超出范围。
听起来您正试图将其作为字符串插入,这通常是一个坏主意。您应该使用参数化 SQL 并将值设置为参数,仍然是 .NET DateTime
。SqlCommand.Parameters
有关参数化 SQL 的示例,请参阅文档。您应该尽可能长时间地保持数据的自然类型。
当然,如果您尝试插入一个超出 SQL 可以存储范围的值,您仍然可能会收到此错误。DateTime
特别是,我认为 SQL 的下限为 1753 作为年份。如果您的价值是DateTime.MinValue
出于某种原因(1 月 1 日,公元 1 日),那么您仍然会遇到这个问题。您是否为尝试插入的值添加了诊断信息?
对不起,我的第一个答案错过了你的问题。尝试使用标准参数系统添加参数。
command.CommandText = "插入到 FooTable (FooDate) 值 (@FooDate)"; command.Parameters.AddWithValue("@FooDate", DateToUse.Date);
使用 .Date 只会返回对象的日期部分。这是另一个对它的引用Date vs DateTime
如果您使用的是参数化查询,我可以毫不费力地将它DateTime
从 ASP.NET 日历控件插入到包含类型列的 SQL Server 数据库表中DATE
。
使用这样的东西:
// define INSERT statement - of course, yours will look quite different!
string insertStmt = "INSERT INTO dbo.DateTest(TheDate) VALUES(@DateValue);";
// set up connection and SqlCommand to do insert
using(SqlConnection conn = new SqlConnection("....your-connection-string-here...."))
using (SqlCommand cmd = new SqlCommand(insertStmt, conn))
{
// add the parameters - the @DateValue - to the SqlCommand object and
// define it's datatype (on the database) and set the value to be stored
cmd.Parameters.Add("@DateValue", SqlDbType.Date).Value = Calendar1.SelectedDate;
// open connection, execute command, close connection
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
首先尝试一件事,尝试在列中插入 01/01/2012,因为这可能是由于错误的文化......它可能是 mm/dd/yyyy 或 dd/mm/yyyy
先试试这个 2012 年 1 月 1 日,看看这是否有效。
谢谢