请教MYSQL 范围查询

Evila 发布于 2012/07/24 14:58
阅读 1K+
收藏 0

假如某表中有两个字段:开始时间(start_time)和结束时间(end_time),都是整数字段格式库存为时间戳。

现在想要查询出 “现在时间”(current_time,也是时间戳) 在开始时间和结束范围以内的数据。

规则如下:

  1. 开始时间为NULL,则不限制开始时间,即 现在时间 之前的数据都符合记录
  2. 结束时间为NULL,则不限制结束时间,即 现在时间以后的数据都符合记录
  3. 如果开始时间和结束时间都为NULL,那么查询所有的记录。

请各位指教一下。

以下是问题补充:

@Evila:我自己写的,这样似乎有点问题,查询不太准确。 ((start_time IS NULL) OR ( start_time <= current_time)) AND ((end_time IS NULL) OR (end_time >= current_time)) (2012/07/24 15:03)
加载中
0
童学芬
童学芬

( start_time IS NULL and  current_time< end_time )  or  ( end_time IS NULL and and start_time  is not null  current_time> start_time )  or( start_time IS NULL and end_time IS NULLor (  current_time> start_time  and current_time< end_time )

这代表了四种情形:

  1. 开始时间为NULL,则不限制开始时间,即 现在时间 在  结束时间 之前的数据都符合记录
  2. 结束时间为NULL,则不限制结束时间,即 现在时间 在 开始时间  以后的数据都符合记录
  3. 如果开始时间和结束时间都为NULL,那么查询所有的记录。
  4. 如果开始时间和结束时间都为不为NULL,那么查询当前时间在此之间的数据

Evila
Evila
感谢你,可能是我没有表达清楚。不过问题还是解决了。
0
童学芬
童学芬
开始时间为NULL,则不限制开始时间,即 现在时间 之前的数据都符合记录?你自己没理清逻辑吧。怎么样区分现在时间之前的数据?应该是结束时间大于现在时间的数据吧。
返回顶部
顶部