嗨,在阅读了StackOverflow上的其他问题后,我一直在尝试建立自己的系统来检查房间价格。
当预订日期中的房价没有重叠时,我的查询工作正常并产生正确的天数,但是当重叠时,我在第二行结果中得到了额外的一天。
例如,某人到达2011-04-14并离开2011-04-16(2天)。15日的费率从66更改为70,因此他应该以66的费率有1天,以70的费率有1天。
我尝试过没有TIMEDATE-只是DATE,但是发生了同样的事情。
询问
SELECT rates.rate_id, rate_start_date, rate_end_date, rate_price,
(DATEDIFF( IF (rate_end_date > '2011-04-16 14:00:00' , '2011-04-16 14:00:00', rate_end_date),
IF ( rate_start_date < '2011-04-14 12:00:00' , '2011-04-14 12:00:00' , rate_start_date )) +1 )
AS days FROM rates
WHERE rate_start_date <= '2011-04-16 14:00:00' AND rate_end_date > '2011-04-14 12:00:00'
ORDER BY rate_price ASC
费率表
rate_id rate rate_start_date rate_end_date
1 70 2011-04-15 00:00:00 2011-05-31 23:59:59
2 80 2011-06-01 00:00:00 2011-06-30 23:59:59
3 100 2011-07-01 00:00:00 2011-08-31 23:59:59
4 80 2011-09-01 00:00:00 2011-09-30 23:59:59
5 70 2011-10-01 00:00:00 2011-10-31 23:59:59
6 45 2011-11-01 00:00:00 2011-12-31 23:59:59
0 66 2011-01-01 00:00:00 2011-04-14 23:59:59
结果
rate_id rate_start_date rate_end_date rate days
0 2011-01-01 00:00:00 2011-04-14 23:59:59 66 1
1 2011-04-15 00:00:00 2011-05-31 23:59:59 70 2 <----this should be 1 day
我非常感谢任何帮助或解释,为什么我的查询为我提供了第二行结果的额外时间。
谢谢
谢谢您的回答,马丁给您提供了2行,但是没有几天…埃米利奥(Emilio)的回答让我开始思考如何设置费率。我将费率表更改为日期格式,而不是日期时间,并使rate_end_date与下一个rate_start_date在同一天。
0 66 2011-01-01 2011-04-15
1 70 2011-04-15 2011-06-01
2 80 2011-06-01 2011-07-01
3 100 2011-07-01 2011-09-01
4 80 2011-09-01 2011-10-01
5 70 2011-10-01 2011-11-01
6 45 2011-11-01 2012-01-01
然后放下+1并
SELECT rates.rate_id, rate_start_date, rate_end_date, rate_price,
(DATEDIFF( IF (rate_end_date > '2011-04-16' , '2011-04-16', rate_end_date),
IF ( rate_start_date < '2011-04-14' , '2011-04-14' , rate_start_date )) )
AS days FROM rates WHERE rate_start_date <= '2011-04-16'
AND rate_end_date > '2011-04-14'
ORDER BY rate_price ASC
生产的
rate_id rate_start_date rate_end_date rate days
0 2011-01-01 2011-04-15 66 1
1 2011-04-15 2011-06-01 70 1
以及从4月1日到8日没有重叠率的查询:
SELECT rates.rate_id, rate_start_date, rate_end_date, rate_price,
(DATEDIFF( IF (rate_end_date > '2011-04-08' , '2011-04-08', rate_end_date),
IF ( rate_start_date < '2011-04-01' , '2011-04-01' , rate_start_date )) )
AS days FROM rates WHERE rate_start_date <= '2011-04-08'
AND rate_end_date > '2011-04-01'
ORDER BY rate_price ASC
产生:
rate_id rate_start_date rate_end_date rate days
0 2011-01-01 2011-04-15 66 7
感谢agiain的帮助!
问题内容: 我有这张表来查询不同季节(高,低)季节的房间价格 如何获得不同天数和不同季节的5天总价.. 看这张表 这是我的命令(mysql)我想从 2013年4月7日* 到 2013年 11月7日获得10晚的总价格 * 添加 我写了这个命令,但是还是没用 错误:#1305-功能saudihot_saudihotels.strtodate不存在 问题答案: 这是查询: 注意,表达式要简单得多,现在星
我是工作酒店预订工作流程。但我在酒店预订API上很挣扎。下面我一步一步地提到我所做的活动。请帮我解决这个问题。 OTA_HotelAvailrQ API: 请求正文:
我有3张桌子,酒店和一张预订桌 Marc预订Croissaint酒店、Baguette酒店和Fromage酒店(全部预订) Anthony预订Croissaint酒店,Baguette酒店 巴斯蒂安没有预订酒店 我想找皮埃尔和马克,因为他们预订了所有的酒店,而不仅仅是一个,两个或一个都没有 注意:如果你可以不使用分析函数,那就更好了
预估价格 说明 预估价格只是参考价格,最终支付费用,以实际产生费用为准 地址URL /v1/common/Estimate/priceCoupon 支持格式 {url}?k1=v1&k2=v2&k3=v3&... HTTP请求方式 GET 是否需要登录 是 关于登录授权,参见 如何登录授权 访问授权限制 暂无 请求参数 名称 类型 必选 描述 client_id string yes 申请应用时分
1. 酒店方案 1.1. 核心能力模块 1.2. 功能列表 1.1. 核心能力模块 技能 API / 白板H5 智能家居品牌 1.2. 功能列表 功能/能力 功能描述 输出方式 品牌配置 获取品牌相关信息、绑定需要控制的品牌及同步设备 API/白板H5/若琪APP 空间隔离 可以在一个账号下创建多个独立空间(客房),一次同步 实现多个空间的独立控制 API/白板H5/若琪APP 房间管理 在空间中
题目描述: 放暑假了,小明决定到某旅游景点游玩,他在网上搜索到了各种价位的酒店(长度为n的数组A),他的心理价位是x元,请帮他筛选出k个最接近x元的酒店(n>=k>0),并由低到高打印酒店的价格。 备注: 1)酒店价格数组A和小明的心理价位x均为整型数据;(0 < n,k,x < 10000) 2)优先选择价格最接近心理价位的酒店;若两家酒店和心理价位差价相同,则选择价格较低的酒店。(比如100元