시간 쿼리(쿼리 빌더 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'], ]