官方文檔:https://www.kancloud.cn/manual/thinkphp5_1/354029
時間比較
使用 where
方法
where
where
方法支援時間比較,例如:
// 大于某個時間
where('create_time', '> time', '2016-1-1');
// 小于某個時間
where('create_time', '<= time', '2016-1-1');
// 時間區間查詢
where('create_time', 'between time', ['2015-1-1', '2016-1-1']);
第三個參數可以傳入任何有效的時間表達式,會自動識别你的時間字段類型,支援的時間類型包括
timestamps
、
datetime
、
date
和
int
。
使用 whereTime
方法
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('user')
->whereTime('birthday', '1970-10-1')
->select();
// 時間區間查詢
Db::name('user')
->whereTime('birthday', ['1970-10-1', '2000-10-1'])
->select();
針對時間的區間查詢,系統還提供了一個
whereBetweenTime
快速方法
// 查詢2017年上半年注冊的使用者
Db::name('user')
->whereBetweenTime('create_time', '2017-01-01', '2017-06-30')
->select();
// 查詢2017年6月1日注冊的使用者
Db::name('user')
->whereBetweenTime('create_time', '2017-06-01')
->select();
沒有指定結束時間的話,表示查詢當天。
查詢某天
有兩種方式查詢某一天的資料
// 查詢2017年6月1日注冊的使用者
Db::name('user')
->whereBetweenTime('create_time', '2017-06-01')
->select();
// 或者使用whereTime方法
Db::name('user')
->whereTime('create_time',['2017-06-01', '2017-06-02'])
->select();
時間表達式
還提供了更友善的時間表達式查詢,例如:
// 擷取今天的部落格
Db::name('blog')
->whereTime('create_time', 'today')
->select();
// 擷取昨天的部落格
Db::name('blog')
->whereTime('create_time', 'yesterday')
->select();
// 擷取本周的部落格
Db::name('blog')
->whereTime('create_time', 'week')
->select();
// 擷取上周的部落格
Db::name('blog')
->whereTime('create_time', 'last week')
->select();
// 擷取本月的部落格
Db::name('blog')
->whereTime('create_time', 'month')
->select();
// 擷取上月的部落格
Db::name('blog')
->whereTime('create_time', 'last month')
->select();
// 擷取今年的部落格
Db::name('blog')
->whereTime('create_time', 'year')
->select();
// 擷取去年的部落格
Db::name('blog')
->whereTime('create_time', 'last year')
->select();
如果查詢當天、本周、本月和今年的時間,還可以簡化為:
// 擷取今天的部落格
Db::name('blog')
->whereTime('create_time', 'd')
->select();
// 擷取本周的部落格
Db::name('blog')
->whereTime('create_time', 'w')
->select();
// 擷取本月的部落格
Db::name('blog')
->whereTime('create_time', 'm')
->select();
// 擷取今年的部落格
Db::name('blog')
->whereTime('create_time', 'y')
->select();
// 查詢兩個小時内的部落格
Db::name('blog')
->whereTime('create_time','-2 hours')
->select();
多個時間字段區間比較( V5.1.17+
)
V5.1.17+
// 查詢有效期内的活動
Db::name('event')
->whereBetweenTimeField('start_time','end_time')
->select();
// 查詢有效期内的活動
Db::name('event')
->whereTime('start_time', '<=', time())
->whereTime('end_time', '>=', time())
->select();