gpt4 book ai didi

mysql - 按月份范围选择记录

转载 作者:行者123 更新时间:2023-11-29 13:50:27 25 4
gpt4 key购买 nike

我有一个表格,每行都有一个start_dateend_dateend_date 可以是与开始日期不同的年份。

我需要选择与输入月份范围重叠的所有记录。

例如:

n  start_date  end_date  
1 2010-12-03 2010-03-29 // months are 12,1,2,3
2 2012-03-11 2010-06-24 // months are 3,4,5,6
3 2010-06-17 2010-10-04 // months are 6,7,8,9,10
4 2010-07-03 2010-09-21 // months are 7,8,9
5 2010-04-21 2011-05-13 // months are 1..12

输入范围为3,4,5,6。输出行应该是:1,2,3,5。只有第 4 行在任何月份中都没有重叠。

如何在 SQlite/MySQL 中执行此操作?

我正在使用 Ruby on Rails。

最佳答案

“输入范围”听起来像是一个连接的范围。因此,如果没有 12 个月范围,典型的解决方案将是 where month(start_date) <= $end_month and month(end_date) >= $start_month .

但是这样我们就需要整个范围的模数。我会将关系推广到 1..24 月份。

这意味着范围是:

month(start_date) ... month(end_date) + 12*(year(end_date) - year(start_date))

现在给定范围$from, $to必须推出:

if($to < $from){ 
$to += 12;
}

关系展开到

month(start_date) <= $to 
and (month(end_date) + 12*(year(end_date) - year(start_date))) >= $from

希望有帮助。

关于mysql - 按月份范围选择记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16752294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com