php - 是否有 sql 表示法可以区分月份之间的检查?

标签 php sql mysql

我将重复发生的事件存储在事件表中,这些事件发生在一年中的某些月份、任何一年和每年。例如;

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_frommonth_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/

相关文章:

java - Hibernate和mysql错误: Cannot add or update a child row

sql - 使用 SSIS 包加载数据时理解间歇性不一致的问题

email - 在邮件正文中引用/转义变量

php - date( ) 返回 1970-01-01

php - 难以从登录用户获取数据

mysql - 根据 MySQL 中的重复列删除行

mysql - 在 Mysql 中加入 HQL 更新的替代方法

MySQL,获取开始日期和结束日期列之间的数据?

php - 查询不适用于左连接?

php - 将 Active Directory 添加到网站