我将重复发生的事件存储在事件表中,这些事件发生在一年中的某些月份、任何一年和每年。例如;
CREATE TABLE events (
event_id tinyint(3) unsigned NOT NULL auto_increment,
name varchar(255) NOT NULL,
month_from tinyint(3) unsigned NOT NULL,
month_to tinyint(3) unsigned NOT NULL,
PRIMARY KEY (event_id) )
ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3;
INSERT INTO events
(event_id, name, month_from, month_to)
VALUES
(1, 'Event ABC', 5, 11), (2, 'Event XYZ', 12, 4);
事件 ABC - 每年 5 月至 11 月和 事件 XYZ - 每年 12 月至 4 月期间发生
在我的事件表中,我将 month_from
和 month_to
存储为数值。
我想要做的是说获取当前月份(10 月)并将其传递到 sql 查询中,以便它返回给我正确的事件“事件 ABC”。但我也想传递给它一个 future 的月份,比如 2 月,它应该返回给我“Event XYZ”
我希望这是有道理的?
最佳答案
select * from tbl
where (month_from <= $YOUR_MONTH and month_to >= $YOUR_MONTH) or
(month_from > month_to and (month_to >= $YOUR_MONTH or month_from <= $YOUR_MONTH)
这也适用于 DEC-APR 范围
关于php - 是否有 sql 表示法可以区分月份之间的检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1602234/