【发布时间】:2017-06-05 20:09:12
【问题描述】:
我使用 ASP.NET MVC 创建了一个简单的 CRUD,并且可以正常保存我的寄存器。 如果我查看数据库,我的日期是这样存储的:
2017-06-01 00:01:23.750
但是当我尝试使用 MVC 脚手架创建的异步方法编辑同一个寄存器时,日期似乎为空:
01/01/0001 00:00:00
然后(当然)我得到一个错误:
将 datetime2 数据类型转换为 datetime 数据类型 导致超出范围的值。
这就是异步方法:
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Edit([Bind(Include = "ArtigoId,Titulo,Texto,DataPublicacao,UltimaModificacao,UsuarioModificacao,DataCriacao,UsuarioCriacao")] Artigo artigo)
{
if (ModelState.IsValid)
{
db.Entry(artigo).State = EntityState.Modified;
await db.SaveChangesAsync();
return RedirectToAction("Index");
}
return View(artigo);
}
为什么会这样?如何从数据库中正确恢复日期?
编辑:
我在数据库中更改了 datetime2(0-7) 但这使它接受了值 01/01/0001 00:00:00 我想知道为什么这个值出现而不是 2017-06-01 00:01:23.750.
数据库中的所有其他值都正常恢复,但不是这个日期。
【问题讨论】:
-
datetime不支持0001-01-01。在您的数据库中使用datetime2(0-7)数据类型。或者将0001-01-01替换为实际的null值而不是最小值。 -
sql server 中的日期仅从 01/01/1900 开始有效
-
@SqlZim 我在 DB 中更改了
datetime2(0-7)但这使它接受了值01/01/0001 00:00:00,我想知道为什么这个值出现而不是2017-06-01 00:01:23.750
标签: c# sql-server asp.net-mvc date