/**组织日期时间的区间的查询条件
* @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;
}