如何比较日期后的时间?

iih3973s  于 2021-08-13  发布在  Java
关注(0)|答案(2)|浏览(408)

因此,我正在建立一个销售剧院门票的服务,当有人想买票时,客户将看到所有可用的演出列表。
可用节目定义如下:
演出还没卖完
日期尚未过去
时间还没有过去
在后端有一个类似这样的查询,它只过滤上传的节目

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

这些查询不符合上述条件,因为第一个查询在时间过去后不会返回任何显示
第二个查询不起作用,因为当时间条件匹配时,它还会返回较旧的显示。
那么,有没有人知道如何编写一个查询,首先选择日期与条件匹配的所有节目,然后检查时间是否与条件匹配呢。关于上映的节目。

s6fujrry

s6fujrry1#

你所能做的是分别得到有效期大于明天的票,并得到今天符合时间条件的票。所以像这样的方法应该行得通:

SELECT *
FROM shows
WHERE DateADD(dd,1,CURRENT_DATE()) <= show.date OR (CURRENT_DATE() = show.date AND CURRENT_TIME() <= show.time)
lvmkulzt

lvmkulzt2#

You can write : CONVERT(date,GETDATE()) or CONVERT(date,CURRENT_DATE()) like this

SELECT *
FROM shows
WHERE CONVERT(date,GETDATE()) <= shows.date

SELECT *
FROM shows
WHERE CONVERT(date,GETDATE()) <= CONVERT(date,shows.date)

相关问题