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

Date being saved in the database in the wrong format

我们正在尝试以日期时间格式在我们的数据库中保存当前日期和时间。但输入的值始终显示为 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 的字符串表示形式将 date/time 值从 .Net 框架发送到 SQL 服务器。 DateTime 结构 maps directly 到 SQL 服务器各种 date/datetime 数据类型,因此无论何时您需要将 date/time 值从 .Net 代码传递给 SQL 服务器,只需将 DateTime 结构的实例作为参数传递给 SQL 语句。

也就是说,假设您的数据库服务器与您的应用程序服务器在同一时钟上,根本没有理由通过 DateTime.Now - 只需将 GetDate() for DateTime or SysDateTime() 用于 DateTime2 :

此外,请注意更新语句针对 tables,而 con.Database 似乎建议数据库名称。我认为更好的代码可能是:

SqlCommand cmd = new SqlCommand("update <TableName>" + 
                               " set Teacher_code = @Teacher_code ,Checkdate = GETDATE()"+ 
                               " where copycode = @copycode", con);

(当然,将 <TableName> 替换为您的实际 table 姓名)

.ToShortDateString() 只会 return 日期,因此您无法节省时间。使用 DateTime.Now 或 DateTime.UtcNow 作为通用时间。

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

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

将列 Checkdate 的数据类型从 datetime 更正为 date。日期数据类型只存储日期部分。它适用于您的情况。