Java 如何在数据库中正确存储结束日期

Java 如何在数据库中正确存储结束日期,java,javascript,date,datetime,extjs,Java,Javascript,Date,Datetime,Extjs,应用:Java+ExtJS 有许多不同的实体的属性为java.util.Date类型:startDate和iesendDate(endDate可以为NULL)。两个日期都可以选择有或没有时间部分(例如,时间部分始终保持不变,如果未选择则为事件)。例如,像这样: 2010-07-01 00:00:00 当用户选择没有时间的endDate时,可能会出现问题。例如,周期从2010-07-01开始,到1010-07-04结束。现在,它存储在数据库中,如下所示: startDate="2010-07-0

应用:Java+ExtJS

有许多不同的实体的属性为java.util.Date类型:startDate和iesendDate(endDate可以为NULL)。两个日期都可以选择有或没有时间部分(例如,时间部分始终保持不变,如果未选择则为事件)。例如,像这样:

2010-07-01 00:00:00
当用户选择没有时间的endDate时,可能会出现问题。例如,周期从2010-07-01开始,到1010-07-04结束。现在,它存储在数据库中,如下所示:

startDate="2010-07-01 00:00:00"
endDate="2010-07-04 00:00:00". 
所以这段时间似乎在2010-07-04的第一秒结束。但正如用户假设的那样,endDate是隐式包含的,例如,周期在2010-07-04的最后一秒结束。系统中有许多不同时期的日期比较

在这种情况下,如何正确存储结束日期

我考虑过可能的解决方案,但所有这些方案似乎都有点错误:

  • 像这样存储结束日期的时间部分:“2010-07-04 23:59:99”。但似乎结束日期不是24小时,而是(24小时-0。(9)毫秒),这可能是一个潜在的问题。时间部分看起来也很难看
  • 要修改ExtJs组件,它将向用户在持久性阶段选择的日期添加1天,并在向用户显示该日期时再次减去1天(用户明确设置时间部分的情况除外)。我不喜欢这里有时间部分的日期和没有时间部分的日期被区别对待
  • 例如,仅将开始日期保存为日期对象,然后以秒为单位保存期间长度。这种方法看起来很好,但是必须重新编写整个应用程序,并且可能在结束日期使用不同的比较并不容易
  • 只需使用当前的一次保存非封闭结束日期,无需时间,并且在日期比较过程中要非常小心

  • 有人能解释一下解决此类问题最常用的方法吗?

    将结束日期添加为用户选择值的+1天