关于搜索中,从一个时间点到另一个时间点的sql,网上的太乱,而且逻辑很复杂,个人整理了一下

今天看到一个搜索页面;


很简单的一个搜索,

只要操作sql就可以完成,

但是仔细想一下,其实里面逻辑业务挺复杂的,

假如说开始时间starttime,结束时间endtime

现在设计一下:

开始时间为2012-01-01结束时间为2012-12-31

sql处理的时候有几个时间范围:2012-01-02 到2012-10-01这个是一定能被搜索出来的

2012-01-02到2013-01-02能被搜索到吗?

2011-01-01到2012-10-01能被搜索到吗?

2011-01-01到2013-01-01能被搜索到吗?

其实,这些有交集的都应该被搜索到(这是个人意见,我认为都应该被搜到),

如果有交集的不被搜索到,那么是不是太牵强了?

我的意思就是:有一个日期在范围内,就要查询出来。

所以我的做法是,只要有交集就能被搜到,

下面是我的sql:

select * from tb where (starttime>='2012-1-1' and endtime<='2012-12-31') Or 
(starttime<='2012-1-1' and endtime>='2012-12-31') Or 
(starttime>'2012-1-1' and starttime<'2012-12-31') Or 
(endtime>'2012-1-1' and endtime<'2012-12-31')


其实简单一点就是这样:

select * from tb where endtime>='2012-1-1' AND starttime<='2012-12-31'

想复杂了吧,哈哈!

OK!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值