Time Query (Query Builder 8)
Time comparison
The framework has built-in commonly used time query methods, and can automatically identify the type of time field, so no matter what type is used Time fields can all use the time query usage in this chapter.
Use the whereTime method
The whereTime method provides quick query for date and time fields. The example is as follows:
// 大于某个时间 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();
You can also use the following time expression for time query
// 查询两个小时内的博客 Db::name('blog') ->whereTime('create_time','-2 hours') ->select();
Query a certain time interval
For time interval query, the system also provides whereBetweenTime/whereNotBetweenTime shortcut methods.
// 查询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();
Query a certain year
Query the users registered this year
Db::name('user') ->whereYear('create_time') ->select();
Query the users registered last year
Db::name('user') ->whereYear('create_time', 'last year') ->select();
Query a certain year The data is used
// 查询2018年注册的用户 Db::name('user') ->whereYear('create_time', '2018') ->select();
Query a certain month
Query the registered users this month
Db::name('user') ->whereMonth('create_time') ->select();
Query the registered users last month
Db::name('user') ->whereMonth('create_time','last month') ->select();
Query users registered in June 2018
Db::name('user') ->whereMonth('create_time', '2018-06') ->select();
Query a certain week
Query this week’s data
Db::name('user') ->whereWeek('create_time') ->select();
Query last week Data
Db::name('user') ->whereWeek('create_time', 'last week') ->select();
Query the data for a week starting from a specified day
// 查询2019-1-1到2019-1-7的注册用户 Db::name('user') ->whereWeek('create_time', '2019-1-1') ->select();
Query a certain day
Query the users registered on that day
Db::name('user') ->whereDay('create_time') ->select();
Query the users registered yesterday
Db::name('user') ->whereDay('create_time', 'yesterday') ->select();
Query the data of a certain day using
// 查询2018年6月1日注册的用户 Db::name('user') ->whereDay('create_time', '2018-06-01') ->select();
Time field interval comparison
can support Interval comparison of two time fields
// 查询有效期内的活动 Db::name('event') ->whereBetweenTimeField('start_time', 'end_time') ->select();
The above query is equivalent to
// 查询有效期内的活动 Db::name('event') ->whereTime('start_time', '<=', time()) ->whereTime('end_time', '>=', time()) ->select();
Customized time query rules
You can add customization by setting time_query_rule in the database configuration file Time query rules
'time_query_rule' => [ 'hour' => ['1 hour ago', 'now'], ]