[英]sql Date in month time span
我的表中有条目,例如
uid / start / end / value
我现在想 select 位于特定月份的所有条目。 因此,如果用户选择“六月”,我希望获得所有 Entries,而不是 6 月可用的条目。 开始和结束保存为时间戳(无法更改)。 我发现了类似的东西:
WHERE month(start)=5
这确实有效,但不幸的是它只给了我从六月开始的条目。 我当然可以在结尾添加相同的内容,但是如果条目从 5 月开始并在 7 月结束,这仍然无济于事。 我当然可以计算时间戳并直接比较,但我想 select 任何一年的六月 - 而不仅仅是一个特定的。 我在想类似的东西:
WHERE month(start) <= 5 && month(end) >= 5
这可以很好地处理时间戳,但显然这对年假有问题。
有没有一个很好的解决方案来做到这一点,而无需计算接下来几年的所有时间戳并创建一个病态的大查询?
好的,我想通了:
WHERE month(start)=5
OR month(end)=5
OR ( month(start)<=5 AND month(end) >= 5)
OR ( month(start)<=5 AND year(start)<year(end))
OR ( month(end)>=5 AND year(start)<year(end))
我认为这是正确的并且工作正常。
看起来它应该可以工作,但它很复杂,我很确定使用 function 月份意味着你不会遇到任何索引。
您也可以将其改写为:
where start <= 1 Jun 2011
and end >= 1 Jul 2011
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.