Query类的datetime方法更改为whereTime方法 并支持日期表达式查询

This commit is contained in:
thinkphp
2016-06-14 12:23:44 +08:00
parent af648cfa8d
commit 8fa12a4d16

View File

@@ -1231,12 +1231,43 @@ class Query
* 查询日期或者时间
* @access public
* @param string $field 日期字段名
* @param string $op 比较运算 > < between not between
* @param string $op 比较运算符或者表达式
* @param string|array $range 比较范围
* @return $this
*/
public function datetime($field, $op, $range = [])
public function whereTime($field, $op, $range = null)
{
if(is_null($range)){
// 使用日期表达式
$date = getdate();
switch(strtolower($op)){
case 'today':
$range = 'today';
break;
case 'week':
$range = 'this week 00:00:00';
break;
case 'month':
$range = mktime(0, 0, 0, $date['mon'], 1, $date['year']);
break;
case 'year':
$range = mktime(0, 0, 0, 1, 1, $date['year']);
break;
case 'yesterday':
$range = ['yesterday','today'];
break;
case 'last week':
$range = ['last week 00:00:00','this week 00:00:00'];
break;
case 'last month':
$range = [date('y-m-01',strtotime('-1 month')),mktime(0, 0, 0, $date['mon'], 1, $date['year'])];
break;
case 'last year':
$range = [mktime(0, 0, 0, 1, 1, $date['year']-1),mktime(0, 0, 0, 1, 1, $date['year'])];
break;
}
$op = is_array($range)? 'between' : '>';
}
$this->where($field, strtolower($op) . ' time', $range);
return $this;
}