繁体   English   中英

月份和年份的范围查询

[英]Range query from month and year

我有这样一张桌子:

ID  month    year   content
1     4      2013    xxxxx
2     5      2013    yyyyy
3     6      2013    zzzzz
4     8      2014    fffff

我想根据年份和月份来查询它。

我有这样的查询:

SELECT * FROM UPP 
WHERE ( month = '4' AND year = '2013' )
  AND ( month = '6' AND year = '2013' ) 

该查询运行但不返回任何结果。 任何人都可以帮我修复此查询吗?

注意:月份和年份列是整数。

为什么不使用正确的数据类型?

失败了:

SELECT * FROM UPP WHERE (year=2013) AND (month BETWEEN 4 AND 6);

这将是这个特定答案的最简单途径。

编辑

SQL小提琴供参考。

永远不会有任何行,其中month = 4和month = 6这是您的查询所要求的。 添加这样的括号不会改变AND行为,因为你似乎想要它们所以你要求WHERE year=2013 AND month=4 AND month=6

您可以通过多种方式询问您似乎想要的东西,例如:

WHERE (year=2013 AND month=4) OR (year=2013 AND month=6)

要么

WHERE year=2013 AND (month=4 OR month=6)

要么

WHERE year=2013 AND month IN (4,6)

如果你想要全范围(整个季度,第4,5和6个月不仅仅是第4和第6个月,那么swasheck的建议可能是最明确的方式,但如果日期范围跨越年份之间的界限,这将会下降。如果您需要进行完全灵活的远程查询(“截至2013年2月的六个月”等等),那么您可能需要重新考虑表结构以更轻松/有效地支持它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM