所以,我基本上有4个字段:M1 D1,M2 D2
他们代表第1天第1天,第2个月第2天
示例:
基本上我有一个月和一天,想要知道它们之间的哪一个记录。我不需要任何特定于语言的东西,但是我确实在表中有它们并试图用SQL解决问题。我希望有人能帮我解决这个问题。
非常感谢!
答案 0 :(得分:1)
以下是我提出的每天都有效的逻辑:
WHERE (m BETWEEN m1 AND m2 AND d BETWEEN d1 AND d2)
OR (m BETWEEN m1 AND m2 AND ( (m = m1 AND d >= d1) OR (m = m2 AND d <= d2) OR (m > m1 AND m < m2) ))
OR (m1 > m2 AND ( m >= m1 OR m <= m2) AND d BETWEEN d1 AND d2)
OR (m1 > m2 AND ( m >= m1 OR m <= m2) AND ( (m = m1 AND d >= d1) OR (m = m2 AND d <= d2) OR (m > m1 OR m < m2) ))
我还更新了示例,以包含原件中未实现的情况:
答案 1 :(得分:0)
所以你在一个变量中有一个月和一天,并希望匹配记录。我认为最简单的逻辑是将这些值转换为可比的“数字”。类似的东西:
from t
where (month*100+day between m1*100+d1 and m2*100+d2 and m1*100+d1 <= m2*100+d2) or
(month*100+day not between m2*100+d2+1 and m1*100+d1-1and m2*100+m2 < m1*100+d1)
“100”的规则只是它比那个最长的月份(31)更大,并且它为第一种情况产生看起来合理的东西(1001和531)。