我想知道我目前的时间是否介于两个给定时间之间。它工作正常,除非我的结束时间在中午后 ,而我的开始时间是在白天。
例如,如果我有:
开始: 17:00
结束: 03:00
当前: 18:30
然后它不会出现。
我确实理解逻辑出错的地方,但我无法从逻辑上和概念上找到它的修复方法。我的意思是,你可以声称06:30 PM确实在05 PM到03 AM之间,但是在第二天的03 AM!
我们如何克服这个问题?
以下是我的查询:
SELECT * FROM products
JOIN restaurants
ON (products.Venue = restaurants.name)
WHERE products.Drink_Category = Beer
AND restaurants.Area = Racks
AND (
HOUR(18:30) >= HOUR(products.Start) -- here is where the time is set
AND HOUR(18:30) <= HOUR(products.End) --and here is the end
)
ORDER BY products.Price/products.Multiple ASC;
我已经尝试了BETWEEN
查询,但它不适用于那些特定情况。
答案 0 :(得分:1)
基本上,当products.Start
小于SELECT * FROM products
JOIN restaurants
ON (products.Venue = restaurants.name)
WHERE products.Drink_Category = Beer
AND restaurants.Area = Racks
AND (
HOUR(18:30) >= HOUR(products.Start) -- here is where the time is set
AND HOUR(18:30) <= CASE
WHEN products.End<products.Start
THEN HOUR(products.End)+24
ELSE HOUR(products.End) END --and here is the end
)
ORDER BY products.Price/products.Multiple ASC;
时,只需添加24即可计算当天换行。 E.g。
{{1}}
答案 1 :(得分:0)
Select * FROM table_event where ((SaleDate >= @FromDate) AND (SaleDate < @ToDate)) Order by SaleDate DESC
2-你可以在后端改变你的状况,如果你的结束时间到明天你必须写下这样的另一个条件:
(HOUR(18:30) >= HOUR(products.Start) AND HOUR(23:59) <= HOUR(products.End) )
OR
( HOUR(00:00) >= HOUR(products.Start) AND HOUR(3:00) <= HOUR(products.End) )