/**组织日期时间的区间的查询条件 * @param $params * @param $field_prefix * @return string * 数组中必须包含 字段名前缀__begin 和 字段名前缀__end ,没有则返回'',字段名前缀是对于数组来说,组织where条件就是将$field_prefix当作字段名。 */ function set_Date_Where($params,$field_prefix) { if(empty($field_prefix)) return ''; else{ if(!array_key_exists($field_prefix.'_begin',$params)) return ''; if(!array_key_exists($field_prefix.'_end',$params)) return ''; } $where=' '; /**判断start_time的条件**/ if(!empty($params[$field_prefix.'_begin']) && !empty($params[$field_prefix.'_end'])) { //如果开始时间和结束时间都不空 $field_prefix.' if ($params[$field_prefix.'_begin'] == $params[$field_prefix.'_end']) { //但开始时间和结束时间相等,就查询当天的00:00:00到23:59:59 $day = substr($params[$field_prefix.'_begin'],0,11); $where .= ' and '.$field_prefix.' between ' . strtotime($day.' 00:00:00') . ' and ' . strtotime($day.' 23:59:59'); } elseif($_begin = strtotime($params[$field_prefix.'_begin']) > $_end = strtotime($params[$field_prefix.'_end'])) //如果开始时间大于结束时间,默认调换过来 $where .= ' and '.$field_prefix.' between ' . $_end . ' and ' . $_begin; else $where .= ' and '.$field_prefix.' between ' . strtotime($params[$field_prefix.'_begin']) . ' and ' . strtotime($params[$field_prefix.'_end'].' 23:59:59'); } elseif(!empty($params[$field_prefix.'_begin']) && empty($params[$field_prefix.'_end'])) //如果开始时间不为空,结束时间为空。查询开始时间为 $where .= ' and '.$field_prefix.' >= '.strtotime(substr($params[$field_prefix.'_begin'],0,11).' 00:00:00'); elseif(empty($params[$field_prefix.'_begin']) && !empty($params[$field_prefix.'_end'])) //如果开始时间为空,结束时间不为空。查询结束时间之前 $where .= ' and '.$field_prefix.' <= '.strtotime($params[$field_prefix.'_end'].' 23:59:59'); else{ $where = ' ';//都为空 } return $where; }