首先,确保 from 以及 until 是mysql吗 DATE 类型,而不是存储为字符串。 如果这些列是mysql DATE 数据类型,然后我们可以这样做:
SELECT r.id AS room_id
, r.quantity - IFNULL(SUM(IF('2012-12-01' BETWEEN v.from AND v.until, v.quantity, 0)),0) AS `1`
, r.quantity - IFNULL(SUM(IF('2012-12-02' BETWEEN v.from AND v.until, v.quantity, 0)),0) AS `2`
, r.quantity - IFNULL(SUM(IF('2012-12-03' BETWEEN v.from AND v.until, v.quantity, 0)),0) AS `3`
, ...
FROM room r
LEFT
JOIN room_reservation v
ON v.room_id = r.id
AND v.until >= '2012-12-01'
AND v.from <= '2012-12-31'
GROUP BY r.id, r.quantity
ORDER BY r.id
如果不是的话 DATE 数据类型,而不是规范中的字符串 YYYY-MM-DD 格式,然后我们可以使用mysql STR_TO_DATE 要转换为的函数 DATE . sql只会有点混乱。
1条答案
按热度按时间u4dcyp6a1#
首先,确保
from
以及until
是mysql吗DATE
类型,而不是存储为字符串。如果这些列是mysql
DATE
数据类型,然后我们可以这样做:如果不是的话
DATE
数据类型,而不是规范中的字符串YYYY-MM-DD
格式,然后我们可以使用mysqlSTR_TO_DATE
要转换为的函数DATE
. sql只会有点混乱。