Java &引用;办公时间“;使用jodatime,如何在数据库中存储

Java &引用;办公时间“;使用jodatime,如何在数据库中存储,java,hibernate,datetime,hibernate-mapping,jodatime,Java,Hibernate,Datetime,Hibernate Mapping,Jodatime,我正在考虑为一周中的每一天存储一组“工作/办公时间”,即。 星期一至九至五 星期二-8时30分至16时30分 ... 星期六10:00至14:00 等等 在服务层中使用Jodatime,我将使用这些值来计算某些时间间隔中哪些部分在这些办公时间之内,哪些部分不在这些办公时间之内 在我看来,最好的计算方法是使用间隔的重叠函数,正如这个快速组合的示例所示: LocalTime startOfficeHours = new LocalTime(9, 30); LocalTime endO

我正在考虑为一周中的每一天存储一组“工作/办公时间”,即。 星期一至九至五 星期二-8时30分至16时30分 ... 星期六10:00至14:00 等等

在服务层中使用Jodatime,我将使用这些值来计算某些时间间隔中哪些部分在这些办公时间之内,哪些部分不在这些办公时间之内

在我看来,最好的计算方法是使用间隔的重叠函数,正如这个快速组合的示例所示:

    LocalTime startOfficeHours = new LocalTime(9, 30);
    LocalTime endOfficeHours = new LocalTime(17, 30);
    Interval officeHoursToday = new Interval(startOfficeHours.toDateTimeToday(), endOfficeHours.toDateTimeToday());

    DateTime start = new DateTime().withHourOfDay(8).withMinuteOfHour(30);
    DateTime end = start.plusHours(7).plusMinutes(45);

    Interval workShift = new Interval(start, end);

    Period withinOfficeHours = officeHoursToday.overlap(workShift).toPeriod();

    assertEquals(withinOfficeHours.getHours(), 6);
    assertEquals(withinOfficeHours.getMinutes(), 45);
现在,我需要找到一种快速读取和写入数据库中的办公时间间隔的方法

如果我只使用整数,那将是28列-但这可能比写入和读取可能包含大量冗余信息的PersistentLocalTimes要快。但在这两种情况下,我最终不得不一直手动创建间隔

有没有办法在数据库中存储一个“日期不可知”的时间间隔,这样我就可以在按照上面的方法进行计算时更改日期


如果有人经历过这一过程并有任何指示,我将不胜感激。

您可以将这两个值
workShift.getStartMillis()
workShift.getEndillis()
(在Java中返回
long
)作为类型为
big int
的两个字段保存到您的数据库中


您可以将这两个值保存为
分隔文本”字段


如果您希望自己稍后应用该毫秒数的加法,而不是创建Joda时间间隔,则也可以将
workShift.toDurationMillis()
存储在数据库中,作为
big int

您使用的是哪种DBMS?博士后?神谕