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')

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

原文地址:https://www.cnblogs.com/rufus-hua/p/3510949.html