作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有下表“季节”,其中包含定义每个时段的预订价格的时间段;
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/
import java.util.Scanner; import java.util.Date; import java.text.DateFormat; import java.text.Simpl
您将看到示例代码。 以下是我的问题:-我必须选择有值(value)的服务,但是当我取消服务时,总价格增加而不是减少。-我测试后取消了所有服务,但是总价还是有。我怎样才能让它回到零? 谢谢! :) 这是
我是一名优秀的程序员,十分优秀!