日期:2014-05-18  浏览次数:20376 次

sql语句书写,根据查询条件和数据内的字段查询交集记录
例如,我现在有一个旅游线路的出发日期,是这样的:2011-2-1,2011-2-3,2011-3-2
现在查询条件是这样的,2011-1-1~2011-3-1,现在要查询他们的交集,应该怎么写查询语句。
注,日期查询条件可能大于一个月,最大有三个月。
我本来想这样写的,
select * from line where startDate like '%2011-1-1%' or
startDate like '%2011-1-2%' ........ startDate like '%2011-3-1%' 
不过我感觉这样写不妥,想找更好的方法。请求赐教,不能解决问题者不要乱回复。

------解决方案--------------------
2011-2-1,2011-2-3,2011-3-2
指的什么意思?
是三个时间点?
还是2011-2-1到2011-2-3再到2011-3-2?
------解决方案--------------------
SQL code
WHERE startDate  BETWEEN '2011-1-1' AND '2011-3-1'

------解决方案--------------------
OR

SQL code
WHERE startDate  >= '2011-1-1' 
AND startDate < '2011-3-2'

------解决方案--------------------
startDate用DATETIME类型,不要用字符型
------解决方案--------------------
探讨
例如,我现在有一个旅游线路的出发日期,是这样的:2011-2-1,2011-2-3,2011-3-2
现在查询条件是这样的,2011-1-1~2011-3-1,现在要查询他们的交集,应该怎么写查询语句。
注,日期查询条件可能大于一个月,最大有三个月。
我本来想这样写的,
select * from line where startDate like '%2011-1-1%' or
sta……

------解决方案--------------------
时间的话最好是用 datetime 格式
------解决方案--------------------
select * from line where (select startDate from line where startDate between '2011-1-1' and '2011-3-1') in('2011-2-1','2011-2-3','2011-3-2')