시간 쿼리(쿼리 빌더 8)


시간 비교

프레임워크에는 일반적으로 사용되는 시간 쿼리 방법이 내장되어 있으며 시간 필드 유형을 자동으로 식별할 수 있으므로 어떤 유형의 시간 필드를 사용하더라도 이 장에서는 시간 쿼리 사용법을 설명합니다. 균일하게 사용할 수 있습니다.

whereTime 메서드를 사용하세요

whereTime 메서드는 날짜 및 시간 필드에 대한 빠른 쿼리를 제공합니다. 예는 다음과 같습니다.

// 大于某个时间
Db::name('user')
    ->whereTime('birthday', '>=', '1970-10-1')
    ->select();
// 小于某个时间
Db::name('user')
    ->whereTime('birthday', '<', '2000-10-1')
    ->select();
// 时间区间查询
Db::name('user')
    ->whereTime('birthday', 'between', ['1970-10-1', '2000-10-1'])
    ->select();
// 不在某个时间区间
Db::name('user')
    ->whereTime('birthday', 'not between', ['1970-10-1', '2000-10-1'])
    ->select();

시간 쿼리에 다음 시간 표현식을 사용할 수도 있습니다

// 查询两个小时内的博客
Db::name('blog')
	->whereTime('create_time','-2 hours')
    ->select();

특정 시간 간격 쿼리

For 시간 간격 쿼리의 경우 시스템은 whereBetweenTime/whereNotBetweenTime 단축 메서드도 제공합니다.

// 查询2017年上半年注册的用户
Db::name('user')
    ->whereBetweenTime('create_time', '2017-01-01', '2017-06-30')
    ->select();
    
// 查询不是2017年上半年注册的用户
Db::name('user')
    ->whereNotBetweenTime('create_time', '2017-01-01', '2017-06-30')
    ->select();

특정 연도 조회

올해 등록 사용자 조회

Db::name('user')
    ->whereYear('create_time')
    ->select();

작년 등록 사용자 조회

Db::name('user')
    ->whereYear('create_time', 'last year')
    ->select();

특정 연도 데이터 사용량 조회

// 查询2018年注册的用户
Db::name('user')
    ->whereYear('create_time', '2018')
    ->select();

특정 월 조회

조회 이번달 등록자 조회

Db::name('user')
    ->whereMonth('create_time')
    ->select();

지난달 등록자 조회

Db::name('user')
    ->whereMonth('create_time','last month')
    ->select();

2018년 6월 등록자 조회

Db::name('user')
    ->whereMonth('create_time', '2018-06')
    ->select();

특정 주 조회

이주 데이터 조회

Db::name('user')
    ->whereWeek('create_time')
    ->select();

지난주 데이터 조회

Db::name('user')
    ->whereWeek('create_time', 'last week')
    ->select();

조회 특정일부터 시작하는 데이터 주간 데이터

// 查询2019-1-1到2019-1-7的注册用户
Db::name('user')
    ->whereWeek('create_time', '2019-1-1')
    ->select();

특정 일자 조회

당일 등록된 사용자 조회

Db::name('user')
    ->whereDay('create_time')
    ->select();

어제 등록자 조회

Db::name('user')
    ->whereDay('create_time', 'yesterday')
    ->select();

특정일의 데이터 조회

// 查询2018年6月1日注册的用户
Db::name('user')
    ->whereDay('create_time', '2018-06-01')
    ->select();

시간 필드 간격 비교

는 두 시간 필드의 간격 비교를 지원할 수 있습니다

// 查询有效期内的活动
Db::name('event')
	->whereBetweenTimeField('start_time', 'end_time')
    ->select();

위 쿼리는

// 查询有效期内的活动
Db::name('event')
	->whereTime('start_time', '<=', time())
    ->whereTime('end_time', '>=', time())
    ->select();

사용자 정의 시간 쿼리 규칙

데이터베이스 구성 파일에서 time_query_rule을 설정하여 사용자 정의 시간 쿼리 규칙을 추가할 수 있습니다

'time_query_rule'    =>    [
    'hour'    =>    ['1 hour ago', 'now'],
]