tp5.1時間查詢


轉自(https://www.kancloud.cn/manual/thinkphp5_1/354029)

時間比較

使用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']); 

第三個參數可以傳入任何有效的時間表達式,會自動識別你的時間字段類型,支持的時間類型包括timestampsdatetimedateint

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM