我資料庫存的可能包含時分秒的時間戳,現在有一個時間只有年 月 日 需要進行對比 如果相等的話就查詢出來,哪位大神指導一下怎麼判斷 查詢,萬分感謝。
我資料庫存的可能包含時分秒的時間戳,現在有一個時間只有年 月 日 需要進行對比 如果相等的話就查詢出來,哪位大神指導一下怎麼判斷 查詢,萬分感謝。
方法還是有挺多種的,但是我看你需求,應該是需要模糊查詢,我就講一種比較好理解的吧
1.把只有"年-月-日"的時間使用sorttime函數轉換成時間戳記,這樣你就得到當天0點的時間了time1;
2.仍然使用sorttime函數得到+1的時間,或者直接加上1天的總秒數也行,變量名time2,這樣就有2個時間節點了
3.使用between查詢,這樣就能得到當天的所有數據了
=========如果我理解錯了,指正一下,我再改=========
介紹兩種方式,推薦第一種
只要年月日相等,則意思是查詢某天範圍內的數據,自己主動控制時間範圍,例如查詢'2016-10-28'的數據
<code>$st = strtotime("2016-10-28"); $et = strtotime("2016-10-28 23:59:59"); select * from table where date_field between $st and $et</code>
直接用 mysql
內建函數 FROM_UNIXTIME(date_field, '%Y%m%d')
<code>select * from table where FROM_UNIXTIME(date_field,'%Y%m%d') ="2016-10-28" </code>
下面是保存欄位為datetime
格式的sql
<code>select * from table where date_field between "2016-10-28" and "2016-10-28 23:59:59"</code>
<code>select * from table where DATE_FORMAT(date_field , '%Y%m%d') ="2016-10-28"</code>
如果資料庫裡的日期格式一樣的話透過MySQL的substr函數截取到日再做比較
樓主的問題其實就是:
根據時間字段查詢某一天(比如2016年10月28日)的資料:
<code><?php $min = strtotime('2016-10-28'); $max = strtotime('2016-10-29'); echo "select * from t where time >= $min and time < $max"; // 输出 select * from t where time >= 1477584000 and time < 1477670400</code>
如果時間字段time儲存的不是時間戳,而是date('YmdHis')格式的資料,則可以這樣:
<code>select * from t where time >= 20161028000000 and time < 20161029000000</code>