Sql 以错误格式保存在数据库中的日期
我们正在尝试以Datetime格式保存数据库中的当前日期和时间。但输入的值始终显示为1900-01-01 00:00:00.000 我们尝试了以下代码:Sql 以错误格式保存在数据库中的日期,sql,asp.net,datetime,sql-server-2008-r2,Sql,Asp.net,Datetime,Sql Server 2008 R2,我们正在尝试以Datetime格式保存数据库中的当前日期和时间。但输入的值始终显示为1900-01-01 00:00:00.000 我们尝试了以下代码: SqlCommand cmd = new SqlCommand("update " + con.Database + " set Teacher_code=@Teacher_code ,Checkdat
SqlCommand cmd = new SqlCommand("update " +
con.Database +
" set Teacher_code=@Teacher_code ,Checkdate=" +
DateTime.Now.ToShortDateString() +
" where copycode=@copycode", con);
如何解决此问题?切勿使用
DateTime
的字符串表示法将日期/时间值从.Net framework发送到SQL Server。SQL Server的DateTime
struct包含各种日期/日期时间数据类型,因此每当需要将日期/时间值从.Net代码传递到SQL Server时,只需将DateTime
struct的一个实例作为参数传递到SQL语句
也就是说,假设您的数据库服务器与应用程序服务器处于同一时钟上,则没有理由传递DateTime。现在
——只需将其用于DateTime
或DateTime2
:
另外,请注意update语句的目标是表,而con.Database
似乎建议使用数据库名称。我认为更好的代码可能是:
SqlCommand cmd = new SqlCommand("update <TableName>" +
" set Teacher_code = @Teacher_code ,Checkdate = GETDATE()"+
" where copycode = @copycode", con);
SqlCommand cmd=newsqlcommand(“更新”+
“设置教师代码=@Teacher\u code,Checkdate=GETDATE()”+
“其中copycode=@copycode”,con);
(当然,将
替换为实际的表名).ToSortDateString()将只返回日期,因此无法节省时间。使用DateTime.Now或DateTime.UtcNow表示通用时间。这是插入数据库的日期的DBNull默认值。这意味着将空值另存为日期
请阅读以下内容以获得更好的解释和解决问题的方法:
更正列检查日期的数据类型,从日期时间到日期。日期数据类型仅存储日期部分。它将在您的情况下起作用。很乐意帮助:-)Zohar Peled..但现在我在尝试获取它时遇到了这个错误:nvarchar数据类型转换为datetime数据类型导致值超出范围。string query=“select count(*)from where Checkdate=@Checkdate and sub_code=@sub_code;SqlCommand cmd=new SqlCommand(查询,连接);cmd.Parameters.AddWithValue(“@checkdate”,tb1.Text);connection.Open();Label5.Text=cmd.ExecuteScalar().ToString();connection.Close();请不要使用评论询问后续问题。请改为提出新问题。如果您需要他人的帮助,您可以在新问题下向此人留下评论。例如“@某人,这是你在过去帮助我解决的另一个问题的后续问题。你能试着回答这个问题吗?"我保证大多数人都愿意尝试并帮助他们获得这样的评论。当然……需要等待90分钟。不,不是。这是.Net framework中DateTime结构的默认值。SQL Server中的DateTime数据类型没有默认值,事实上,它的最小值是1753年1月1日。我很抱歉引用中的内容:您误解了那篇文章的答案。SQL Server的“默认值”任何数据类型的属性都是
null
。但是SQL Server的null
与.Net framework的null
不同。这就是为什么我们有DBNull
类。在SQL中,null
基本上是一个未知值,我之所以称它为“默认值”这根本不是一个值。这也是错误的。可以将日期值存储在datetime列中,您只需将时间部分设置为午夜。这不是问题所在。这也是错误的。可以将日期值存储在datetime列中,您只需将时间部分设置为午夜。这不是问题所在。他说重新。