Php 是否有sql符号可以区分月份之间的检查?

Php 是否有sql符号可以区分月份之间的检查?,php,sql,mysql,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 K

我将定期事件存储在事件表中,这些事件发生在一年中的特定月份、任何年份和每年。比如,

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\u from
month\u to
存储为数值

我希望能够做的是,取当前月份(十月)并将其传递到sql查询中,以便它返回给我正确的事件“event ABC”。但我还想给它传递一个未来的月份,比如说2月,它应该返回给我“事件XYZ”

我希望这是有意义的?

从tbl中选择*
select * from tbl
where month_from <= <YOUR_MONTH> and month_to >= <YOUR_MONTH>
其中月份从=
假设
是语义上等同于month\u from和month\u to字段的值

更新:刚刚注意到从12月到4月的第二个示例。也许您可以为12月到12月和1月到4月的事件创建两个范围。

尝试:

 FROM TABLE t
WHERE @month BETWEEN t.month_from AND t.month_to
如果要传递日期并获取比较日期之外的月份,请执行以下操作:

 FROM TABLE t
WHERE MONTH(@your_date) BETWEEN t.month_from AND t.month_to
参考资料:

这应该可以做到:

SELECT * FROM events WHERE month_from <= $your_month AND month_to >= $your_month
SELECT*FROM事件,其中month\u FROM=$your\u month
作为整数,您不限于个月。您可以将日期数据类型与MySQL(或数据库的等效数据类型)一起使用,并使用与上述相同的查询。您的数据库将“理解”日期字段的、=运算符。

从tbl中选择*
其中(月从=$您的月)或

(month\u from>month\u to>和(month\u to>=$YOUR\u month或month\u from感谢您的回复。如果我输入一个月值,比如7(7月),sql工作正常。它会返回一个事件,但不会返回3(3)个。下面是我的sql转储创建表
事件
事件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,主键(
event_id
)引擎=MyISAM默认字符集=utf8 auto_increment=3;插入
events
event\u id
name
month\u from
month\u to
)值(1,'event ABC',5,11),(2,'event XYZ',12,4);Arh ha nice one jab11-您错过了最后一个收尾括号,但多谢了一顿款待:-)