今天看到一个搜索页面;
很简单的一个搜索,
只要操作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!