工作中有时候 遇到 查询一段时间的产品的有效的时候,恰巧这端数据 在数据库里 也有 一个开始时间 结束时间;举个栗子:例如 我有一个产品 有效期是 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')
我喜欢 叫这种为 交叉算法 嘿嘿~