您好我有一张包含以下字段的表格:
person
from_dt
to_dt
house_num
它描述了一个人居住的门牌号,并给出了from_dt和to_dt。 from_dt日期回到2000-01-01,to_dt日期回到2012-01-01
问题:
我想只选择那些在2004年至2009年期间生活过一段时间的人。
即排除喜欢
的人person from_dt to_dt house_num
-----------------------------------------
dave 2000-01-01 2002-01-01 34
然而请保持一个人:
person from_dt to_dt house_num
-----------------------------------------
susan 2008-01-01 2009-06-01 93
我在这里遇到了逻辑问题。有没有人有任何关于如何使用from_dt和to_dt的建议,只包括2009年在一所房子里住了一天或更长时间的人?
非常感谢。
答案 0 :(得分:1)
没有经过测试可能会有拼写错误,但这里有想法 - 从必须在范围内或必须在范围内,或者必须在之前和之后开始。
select *
from table
where (year(from_dt) < 2009 and year(from_dt) > 2004)
or (year(to_dt) < 2009 and year(to_date) > 2004)
or (year(from_dt) < 2004) and year(to_date) > 2009)
你也可以在之前或之后测试NOT。
select *
from table
where not ((year(from_date) < 2004 and year(to_dt) < 2004)
or(year(from_date) > 2009 and year(to_dt) > 2009))
或(正如尼古拉指出的那样)
select *
from table
where year(from_dt) <= 2009 and year(to_dt) >= 2004