sql语句书写,根据查询条件和数据内的字段查询交集记录

lijin84100 2012-02-27 10:42:33
例如,我现在有一个旅游线路的出发日期,是这样的: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%'
不过我感觉这样写不妥,想找更好的方法。请求赐教,不能解决问题者不要乱回复。
...全文
210 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
smallcuplove 2012-02-27
  • 打赏
  • 举报
回复
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')
lijin84100 2012-02-27
  • 打赏
  • 举报
回复
我这里有一个参考网站的链接地址。
http://package.qunar.com/list_%E4%B8%8A%E6%B5%B7_%E4%B8%8A%E6%B5%B7.html?from=pk_sch_index_tj_guoneiyou
大家可以参照一下。
勿勿 2012-02-27
  • 打赏
  • 举报
回复
时间的话最好是用 datetime 格式
dawugui 2012-02-27
  • 打赏
  • 举报
回复
[Quote=引用楼主 lijin84100 的回复:]
例如,我现在有一个旅游线路的出发日期,是这样的: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……
[/Quote]

select * from line where convert(varchar(10),startDate,120) between '2011-01-01' and '2011-03-01'
昵称被占用了 2012-02-27
  • 打赏
  • 举报
回复
startDate用DATETIME类型,不要用字符型
昵称被占用了 2012-02-27
  • 打赏
  • 举报
回复
OR

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

昵称被占用了 2012-02-27
  • 打赏
  • 举报
回复
WHERE startDate  BETWEEN '2011-1-1' AND '2011-3-1'
dawugui 2012-02-27
  • 打赏
  • 举报
回复
2011-2-1,2011-2-3,2011-3-2
指的什么意思?
是三个时间点?
还是2011-2-1到2011-2-3再到2011-3-2?

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧