2个时间段查询问题

工作中有时候 遇到 查询一段时间的产品的有效的时候,恰巧这端数据 在数据库里 也有 一个开始时间 结束时间;举个栗子:例如 我有一个产品 有效期是 2014-1-10 到 2014-2-10 号, 我需要查询2014-1-1号 到 2014-2-1的 生效的产品问题, 这样就 牵扯到 2个时间端 查询的问题。

 

通常我们的写法为:

1        (begin_at<=UNIX_TIMESTAMP('2014-1-1') AND end_at>=UNIX_TIMESTAMP('2014-2-1')) 
2     OR (begin_at<=UNIX_TIMESTAMP('2014-1-1') AND end_at>=UNIX_TIMESTAMP('2014-2-1')) 
3     OR (begin_at>=UNIX_TIMESTAMP('2014-1-1') AND end_at>=UNIX_TIMESTAMP('2014-2-1')) 
4     OR (begin_at>=UNIX_TIMESTAMP('2014-1-1') AND end_at<=UNIX_TIMESTAMP('2014-2-1'))

也就是 4中可能性的 判断 但是 这样子 太过于复杂,其实 可以 用

begin_at<=UNIX_TIMESTAMP('2014-2-1') AND end_at>=UNIX_TIMESTAMP('2014-1-1')

我喜欢 叫这种为 交叉算法  嘿嘿~

posted @ 2014-01-08 16:45  沐松  阅读(220)  评论(0编辑  收藏  举报