From 8fa12a4d1602fea79a24f45809c171965fd2383e Mon Sep 17 00:00:00 2001 From: thinkphp Date: Tue, 14 Jun 2016 12:23:44 +0800 Subject: [PATCH] =?UTF-8?q?Query=E7=B1=BB=E7=9A=84datetime=E6=96=B9?= =?UTF-8?q?=E6=B3=95=E6=9B=B4=E6=94=B9=E4=B8=BAwhereTime=E6=96=B9=E6=B3=95?= =?UTF-8?q?=20=E5=B9=B6=E6=94=AF=E6=8C=81=E6=97=A5=E6=9C=9F=E8=A1=A8?= =?UTF-8?q?=E8=BE=BE=E5=BC=8F=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- library/think/db/Query.php | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/library/think/db/Query.php b/library/think/db/Query.php index 1eb3f722..48d118b1 100644 --- a/library/think/db/Query.php +++ b/library/think/db/Query.php @@ -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; }