時間クエリ (クエリビルダー 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();

次の時間式を使用することもできます。 time query

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

特定の時間間隔のクエリ

#時間間隔のクエリについては、システムは 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();

昨年の登録ユーザーをクエリmonth

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();

指定した日から始まる 1 週間のデータをクエリする

// 查询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();

時間フィールド間隔の比較

2 つの時間フィールドの間隔比較をサポートできます

// 查询有效期内的活动
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'],
]