mirror of
https://gitee.com/fastadminnet/framework.git
synced 2026-07-06 23:02:48 +08:00
改进whereTime查询
This commit is contained in:
@@ -1651,46 +1651,49 @@ class Query
|
|||||||
* 查询日期或者时间
|
* 查询日期或者时间
|
||||||
* @access public
|
* @access public
|
||||||
* @param string $field 日期字段名
|
* @param string $field 日期字段名
|
||||||
* @param string $op 比较运算符或者表达式
|
* @param string|array $op 比较运算符或者表达式
|
||||||
* @param string|array $range 比较范围
|
* @param string|array $range 比较范围
|
||||||
* @return $this
|
* @return $this
|
||||||
*/
|
*/
|
||||||
public function whereTime($field, $op, $range = null)
|
public function whereTime($field, $op, $range = null)
|
||||||
{
|
{
|
||||||
if (is_null($range)) {
|
if (is_null($range)) {
|
||||||
// 使用日期表达式
|
if (is_array($op)) {
|
||||||
$date = getdate();
|
$range = $op;
|
||||||
switch (strtolower($op)) {
|
} else {
|
||||||
case 'today':
|
// 使用日期表达式
|
||||||
case 'd':
|
switch (strtolower($op)) {
|
||||||
$range = ['today', 'tomorrow'];
|
case 'today':
|
||||||
break;
|
case 'd':
|
||||||
case 'week':
|
$range = ['today', 'tomorrow'];
|
||||||
case 'w':
|
break;
|
||||||
$range = 'this week 00:00:00';
|
case 'week':
|
||||||
break;
|
case 'w':
|
||||||
case 'month':
|
$range = ['this week 00:00:00', 'next week 00:00:00'];
|
||||||
case 'm':
|
break;
|
||||||
$range = mktime(0, 0, 0, $date['mon'], 1, $date['year']);
|
case 'month':
|
||||||
break;
|
case 'm':
|
||||||
case 'year':
|
$range = ['first Day of this month 00:00:00', 'first Day of next month 00:00:00'];
|
||||||
case 'y':
|
break;
|
||||||
$range = mktime(0, 0, 0, 1, 1, $date['year']);
|
case 'year':
|
||||||
break;
|
case 'y':
|
||||||
case 'yesterday':
|
$range = ['this year 1/1', 'next year 1/1'];
|
||||||
$range = ['yesterday', 'today'];
|
break;
|
||||||
break;
|
case 'yesterday':
|
||||||
case 'last week':
|
$range = ['yesterday', 'today'];
|
||||||
$range = ['last week 00:00:00', 'this week 00:00:00'];
|
break;
|
||||||
break;
|
case 'last week':
|
||||||
case 'last month':
|
$range = ['last week 00:00:00', 'this week 00:00:00'];
|
||||||
$range = [date('y-m-01', strtotime('-1 month')), mktime(0, 0, 0, $date['mon'], 1, $date['year'])];
|
break;
|
||||||
break;
|
case 'last month':
|
||||||
case 'last year':
|
$range = ['first Day of last month 00:00:00', 'first Day of this month 00:00:00'];
|
||||||
$range = [mktime(0, 0, 0, 1, 1, $date['year'] - 1), mktime(0, 0, 0, 1, 1, $date['year'])];
|
break;
|
||||||
break;
|
case 'last year':
|
||||||
default:
|
$range = ['last year 1/1', 'this year 1/1'];
|
||||||
$range = $op;
|
break;
|
||||||
|
default:
|
||||||
|
$range = $op;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
$op = is_array($range) ? 'between' : '>';
|
$op = is_array($range) ? 'between' : '>';
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user