gpt4 book ai didi

mysql - 选择返回预订总价

转载 作者:行者123 更新时间:2023-11-29 14:24:58 24 4
gpt4 key购买 nike

我有下表“季节”,其中包含定义每个时段的预订价格的时间段;

ID, STARTDATE,  ENDDATE,    PRICE
6, 2012-06-01, 2012-06-30, 20
7, 2012-07-01, 2012-07-31, 35
8, 2012-08-01, 2012-08-31, 30
9, 2012-09-01, 2012-09-30, 25

此表定义定价周期(定价周期的开始日期和结束日期以及该特定定价周期内每天的预订价格)。问题是如何创建一个查询,该查询将返回某个给定预订期间所有日期的预订总价?例如,如何计算(SELECT?)2012-06-10 至 2012-08-20 期间的总预订价格(SUM)?

(当然,可以轻松地手动计算 = 21(六月天数)x20 + 31(七月天数)x35 + 20(八月天数)x30 = 2105)返回总预订价格的 SELECT 语句应该是什么样子?

最佳答案

使用DATEDIFF功能:

SELECT SUM(DATEDIFF(ENDDATE,STARTDATE) * PRICE) AS TOTAL_PRICE
FROM SEASONS
WHERE STARTDATE <= '2012-06-10' AND ENDDATE >= '2012-08-20'

此外,我们可以添加预订开始/结束的检查,因为它们位于中间的某个位置,您不需要包含所有期间...

所以:

SET @START='2012-06-10';
SET @END='2012-08-20';
SELECT SUM(
DATEDIFF(
IF(YEAR(ENDDATE)=YEAR(@END) AND MONTH(ENDDATE)=MONTH(@END), @END, ENDDATE),
IF(YEAR(STARTDATE)=YEAR(@START) AND MONTH(STARTDATE)=MONTH(@START), @START, STARTDATE)
)
) AS TOTAL_SUM
FROM SEASONS
WHERE STARTDATE <= @END AND ENDDATE >= @START

关于mysql - 选择返回预订总价,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11173754/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com