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

时间:2018-04-24 06:16:06

标签: 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 ,Checkdate=" + 
                                   DateTime.Now.ToShortDateString() + 
                                 " where copycode=@copycode", con);

如何解决此问题?

4 个答案:

答案 0 :(得分:1)

永远不要使用DateTime的字符串表示形式将.Net框架中的日期/时间值发送到SQL Server。 DateTime struct maps directly到SQL Server的各种日期/日期时间数据类型,因此每当您需要将.Net代码中的日期/时间值传递给SQL Server时,只需传递{{{}的实例1}} struct作为SQL语句的参数。

话虽如此,假设您的数据库服务器与应用程序服务器位于同一时钟,则根本没有理由通过DateTime - 只需使用GetDate() DateTime.Now或{ {3}} DateTime

另外,请注意更新语句是针对表,而DateTime2似乎建议使用数据库名称。我认为更好的代码可能是:

con.Database

(当然,用您的实际表名替换SqlCommand cmd = new SqlCommand("update <TableName>" + " set Teacher_code = @Teacher_code ,Checkdate = GETDATE()"+ " where copycode = @copycode", con);

答案 1 :(得分:0)

.ToShortDateString()仅返回日期,因此您无法节省时间。使用DateTime.Now或DateTime.UtcNow进行通用时间。

答案 2 :(得分:0)

这是插入数据库的日期的DBNull默认值。这意味着将空值保存为日期。

请阅读本文以获得更好的解释以及如何解决问题: datetime issue with 01/01/1900

答案 3 :(得分:0)

将列 Checkdate 的数据类型从日期时间更正为日期。日期数据类型仅存储日期部分。它适用于你的情况。