首頁 >後端開發 >php教程 >mysql - Php有沒有辦法比較兩個時間的年月日是否相等

mysql - Php有沒有辦法比較兩個時間的年月日是否相等

WBOY
WBOY原創
2016-12-01 01:27:321968瀏覽

我資料庫存的可能包含時分秒的時間戳,現在有一個時間只有年 月 日 需要進行對比 如果相等的話就查詢出來,哪位大神指導一下怎麼判斷 查詢,萬分感謝。

回覆內容:

我資料庫存的可能包含時分秒的時間戳,現在有一個時間只有年 月 日 需要進行對比 如果相等的話就查詢出來,哪位大神指導一下怎麼判斷 查詢,萬分感謝。

方法還是有挺多種的,但是我看你需求,應該是需要模糊查詢,我就講一種比較好理解的吧
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>
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn