我有一个供应商的数据库,他们租车。大多数人的租期是2-3天。在数据库中,我将租金开始日期/时间存储为datetime格式。租金结束日期也是日期时间格式。
假设有人想要租同一辆车,如果请求的日期范围落在车已经租出的日期范围内-我如何检查可用性?我在jsp页面上使用了bean、servlet和jstl。
我猜它应该是一个比较器?
发布于 2012-03-30 08:19:16
如果您正在用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;如果返回任何行,则意味着已经为car 12345预订了与该日期范围冲突的位置。
https://stackoverflow.com/questions/9935403
复制相似问题