gpt4 book ai didi

mysql - 选择当前时间营业的所有商店

转载 作者:可可西里 更新时间:2023-11-01 08:04:08 26 4
gpt4 key购买 nike

我有一个名为 opening_hours 的表,如下所示:

id int(11), weekday int(1), start_hour 时间, end_hour 时间

enter image description here

我使用此查询来选择现在营业的所有商店:

SELECT * FROM shops s 
INNER JOIN opening_hours o
ON ( s.id = o.id )
AND ( o.weekday = WEEKDAY(CURDATE()) + 1 )
AND ( ( CURTIME() >= o.start_hour ) AND ( CURTIME() <= o.end_hour ) )

我的问题是,当商店在午夜后营业时,此查询给出了错误的结果。那是因为午夜之后的时间早于午夜之前的时间。如何处理?

最佳答案

正确的逻辑比较复杂。当营业时间跨越两个日期时,那么在凌晨时分,您必须查看天的营业时间——除非您假设每天的营业时间都相同(但那为什么要有 table 呢?)。

条件更像这样:

SELECT *
FROM shops s INNER JOIN
opening_hours o
ON s.id = o.id
WHERE ((o.weekday = weekday(curdate()) + 1) and
((o.end_hour > o.start_hour and curtime() >= o.start_hour and curtime <= o.end_hour) or
(o.end_hour < o.start_hour and curtime() >= o.start_hour)
) or
(o.weekday = weekday(date_add(curdate(), interval 1 day)) + 1 and
o.end_hour < o.start_hour and
curtime() <= o.end_Hour
);

三个条件是:

  • 一天的营业时间
  • 营业时间跨越两天,且不早于营业时间
  • 营业时间跨越两天,时间早于收市时间

关于mysql - 选择当前时间营业的所有商店,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38420035/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com