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-您错过了最后一个收尾括号,但多谢了一顿款待:-)