从SQL db处理null DateTime

时间:2009-07-01 08:17:04

标签: .net datetime

我有一个非null的sql datetime字段,如果我在asp.net mvc应用程序中的文本框是空白的,因为它无法将string.empty转换为datetime我得到错误。处理这种情况的优雅方法是什么?

5 个答案:

答案 0 :(得分:2)

不确定asp,但是怎么样:

if (string.IsNullOrEmpty(text_from_textbox))
{
   date = DateTime.MinValue;
}

答案 1 :(得分:1)

根据应用程序的要求,您有三种选择:

  • 更改数据库以允许将NULL输入数据库。然后,这将要求您使用“特殊情况”逻辑,以便不要尝试覆盖“Convert.ToDateTime”,而是检查string.Empty并将DBNull.Value传递给数据库。
  • 添加一些客户端验证以检查文本框是否为空,如果是,则拒绝提交表单。与验证检查服务器端一起确认传入的值是非空(以及有效日期),然后失败保存并在没有有效日期时向用户返回错误消息。
  • 如果用户未能指定值,请将默认值(如果可能)(如DateTime.Now)放入数据库。

答案 2 :(得分:1)

如果数据不完整,请勿尝试保存;显示用户的验证错误,并要求填写日期。

答案 3 :(得分:1)

当然最好做

DateTime date;
if (!DateTime.TryParse(text_value, out date)) {
    date = DateTime.MinValue;
}

这样你处理空字符串和无效日期

答案 4 :(得分:0)

我完全赞同弗雷德里克。 如果您期望DB列中的值,则必须在模型中预期它。 在从客户端的响应创建模型之前,在客户端/服务器端使用验证。