2012-03-30 87 views
0

我有一个供应商的数据库,他们租汽车。大多数人租用2-3天的时间。 在数据库上,我有作为日期时间格式存储的租金开始日期/时间。租金结束日期也是日期时间格式。Java比较日期

假设有人想租用同一辆车,如果要求的日期范围落在汽车已经出租的日期范围之一 - 我如何检查可用性?我在jsp页面上使用bean,servlet和jstl。

我想它应该是一个比较?

回答

4

如果您使用Java进行比较,则java.util.Date类已实现Comparable,因此您只能使用其compareTo()方法。但是,您也可以在SQL中使用<>运算符在数据库中进行比较。

还有SQL OVERLAPS功能,可让您比较两个日期范围以查看它们是否相互重叠。如果你的数据库支持它,那可能更简单也更高效。

例如,假设你的表称为“保留”,你可以这样做:

SELECT id FROM reservations 
WHERE (DATE '2012-03-29', DATE '2010-04-01') OVERLAPS (start_date, stop_date) 
    AND car_id = 12345; 

如果返回任何行,这意味着已经有汽车12345与该日期范围相冲突的保留。

+0

你能否给我提供一个指向compareto()方法上的任何好资源的链接 – Parvesh 2012-03-30 00:25:23

+1

[Oracle的Date类的文档](http://docs.oracle.com/javase/7/docs/api /java/util/Date.html#compareTo%28java.util.Date%29)?如果您正在进行Java开发,您应该已将该网站加入书签。 – Wyzard 2012-03-30 00:27:14