Sql 以错误格式保存在数据库中的日期

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

我们正在尝试以Datetime格式保存数据库中的当前日期和时间。但输入的值始终显示为1900-01-01 00:00:00.000

我们尝试了以下代码:

  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列中,您只需将时间部分设置为午夜。这不是问题所在。他说重新。