因此,我正在建立一个销售剧院门票的服务,当有人想买票时,客户将看到所有可用的演出列表。
可用节目定义如下:
演出还没卖完
日期尚未过去
时间还没有过去
在后端有一个类似这样的查询,它只过滤上传的节目
SELECT *
FROM shows
WHERE CURRENT_DATE() <= show.date
此查询返回今天的节目和即将上映的节目,但不过滤经过开始时间的今天的节目。因此,客户仍然可以从已经准备就绪的演出中购买门票。
i、 e:今天是2020年5月29日,现在是21:00:00我们看的节目是今天,20:00:00开始。在目前的系统中,仍然可以买到这场演出的票,但演出已经开始了。
这样的查询不起作用:
SELECT *
FROM shows
WHERE CURRENT_DATE() <= show.date AND CURRENT_TIME() <= show.time
OR
SELECT *
FROM shows
WHERE CURRENT_DATE() <= show.date OR CURRENT_TIME() <= show.time
这些查询不符合上述条件,因为第一个查询在时间过去后不会返回任何显示
第二个查询不起作用,因为当时间条件匹配时,它还会返回较旧的显示。
那么,有没有人知道如何编写一个查询,首先选择日期与条件匹配的所有节目,然后检查时间是否与条件匹配呢。关于上映的节目。
2条答案
按热度按时间s6fujrry1#
你所能做的是分别得到有效期大于明天的票,并得到今天符合时间条件的票。所以像这样的方法应该行得通:
lvmkulzt2#
或