我目前正在一个平台上工作,我想提供一些租金。
我想将所有可能的出租类型存储在数据库中,所以我不需要在代码中处理逻辑。
基本上,我想提供以下租赁时间:
在几天的时间里,我想在几分钟内存储数据,这是很容易理解的。
如果有一个工作日的条件,我想使用DAYOFWEEK指数,所以我可以定义5天,第一天的租金需要有索引2是星期一,对于周末我可以定义租用日需要有索引6,也就是星期六。
rental_type_id | rental_time_in_minutes | rental_label | rental_start_day_indexes一天就像
1 | 1440 | 1 day | 1,2,3,4,5,6,77天
2 | 10080 | 7 days | 1,2,3,4,5,6,75天
3 | 7200 | Weekdays | 2,3,4,5,6等。
这是一种方式,还是我应该在几天内储存出租时间?
任何帮助,建议,批评或欢呼都是有帮助的!
谢谢。
发布于 2015-04-23 19:05:42
根据您的使用方式,将租赁时间存储在分钟内可能会导致DST周围的问题,因为您一天中有23或25个小时。
同时,将索引存储为逗号分隔的列表也会导致问题。我会做一个映射表。该列不是正常形式,很难查询。
老实说,我会为不同的时间做不同的桌子。
发布于 2015-04-23 19:48:13
我会以秒为单位存储这些持续时间。因为它使整个事情更容易被质疑和更容易理解。假设你有那些租期。表的持续时间:
d_id type duration
1 1 day 01
2 3 days 03
3 7 days 07我建议你用正常的时间戳来出租。我会存储开始和结束时间戳。假设你有下表。
在本例中,我使用的是天而不是时间戳,只是为了更容易地显示。假设今天是第三天。餐桌租金:
customer start end
Bob 02 05
Joe 10 11
Ian 03 04假设您希望获得当前所有的活动租金(Bob & Ian)。你可以这样把它拿来:
SELECT * FROM `rentals` WHERE `start`<3 AND 3<`end`通过使用以下查询,您可以找到租赁类型"1天“(Ian)的所有内容:
SELECT * FROM `rentals`,`durations` WHERE `end`-`start`=`duration` and `d_id`=1使用时间戳的优点是您可以非常精确地设置租赁开始和结束时间。您可以检查客户返回对象的时间和时间已经太晚了。这样你就可以很容易地计算出确切的额外费用。
https://stackoverflow.com/questions/29832042
复制相似问题