首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否有sql符号可以区分月份之间的检查?

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

Stack Overflow用户
提问于 2009-10-22 01:13:47
回答 4查看 110关注 0票数 2

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

代码语言:javascript
运行
复制
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月举行

在我的events表中,我将month_frommonth_to存储为数字值。

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

我希望这是有意义的?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-10-22 23:31:17

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范围

票数 1
EN

Stack Overflow用户

发布于 2009-10-22 01:27:01

尝试:

代码语言:javascript
运行
复制
 FROM TABLE t
WHERE @month BETWEEN t.month_from AND t.month_to

如果您想要传递一个日期并获取日期之外的月份以进行比较:

代码语言:javascript
运行
复制
 FROM TABLE t
WHERE MONTH(@your_date) BETWEEN t.month_from AND t.month_to

参考:MONTH

票数 1
EN

Stack Overflow用户

发布于 2009-10-22 01:17:36

代码语言:javascript
运行
复制
select * from tbl
where month_from <= <YOUR_MONTH> and month_to >= <YOUR_MONTH>

假设<YOUR_MONTH>的值在语义上等同于month_from和month_to字段。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1602234

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档