我们正尝试以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);
如何解决此问题?
答案 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 的数据类型从日期时间更正为日期。日期数据类型仅存储日期部分。它适用于你的情况。