Requête temporelle (Query Builder 8)


Comparaison de temps

Le framework intègre des méthodes de requête de temps couramment utilisées et peut identifier automatiquement le type de champ de temps, donc quel que soit le type de champ de temps utilisé, l'utilisation de la requête de temps dans ce chapitre peut être utilisé uniformément.

Utilisez la méthode WhereTime

La méthodewhereTime fournit une requête rapide des champs de date et d'heure, l'exemple est le suivant :

// 大于某个时间
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();

Vous pouvez également utiliser l'expression temporelle suivante pour une requête temporelle

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

Interroger un certain intervalle de temps

Pour les requêtes d'intervalle de temps, le système fournit également des méthodes de raccourci 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();

Requête d'une certaine année

Requête des utilisateurs enregistrés cette année

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

Requête des utilisateurs enregistrés l'année dernière

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

Requête de l'utilisation des données d'une certaine année

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

Requête d'un certain mois

Requête les utilisateurs enregistrés ce mois-ci

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

Requête des utilisateurs enregistrés le mois dernier

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

Requête des utilisateurs enregistrés en juin 2018

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

Requête d'une certaine semaine

Requête des données de cette semaine

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

Requête des données de la semaine dernière

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

Requête du données à partir d'un jour spécifié Données hebdomadaires

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

Interroger un certain jour

Interroger les utilisateurs enregistrés ce jour-là

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

Interroger les utilisateurs enregistrés hier

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

Interroger les données d'un certain jour en utilisant

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

La comparaison d'intervalle de champ de temps

peut prendre en charge la comparaison d'intervalle de deux champs de temps

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

La requête ci-dessus est équivalente à

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

Règles de requête de temps personnalisées

Vous pouvez ajouter des règles de requête de temps personnalisées en définissant time_query_rule dans le fichier de configuration de la base de données

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