我已經搜索並搜索了對此的答案,但我遇到的唯一例子是使用預設date('Y-m-d')
命令的例子。時間間隔6個月,但用戶添加日期
我在我的數據庫中有三個字段 - 月,日,年。這些字段有一個人輸入的值,而不是計算機。現在,我如何弄清楚如何不顯示小於6個月的條目?
我已經搜索並搜索了對此的答案,但我遇到的唯一例子是使用預設date('Y-m-d')
命令的例子。時間間隔6個月,但用戶添加日期
我在我的數據庫中有三個字段 - 月,日,年。這些字段有一個人輸入的值,而不是計算機。現在,我如何弄清楚如何不顯示小於6個月的條目?
轉換並投出您個人列進一個日期,然後把它比作今天...像這樣?
SELECT *
FROM table
WHERE cast(CONCAT(year, '-', month, '-', day) as datetime) >= NOW() - INTERVAL 6 MONTH
您仍然可以使用date
函數...只需將其與mktime
函數結合使用即可。
// DATE IN IDF
// WILL RETURN 2013-08-12
$date_less_6_months = date("Y-m-d", mktime(0, 0, 0, date("m") - 6, date("d"), date("Y")));
// DATE BROKEN APART
$year_less_6_months = date("Y", mktime(0, 0, 0, date("m") - 6, date("d"), date("Y")));
$month_less_6_months = date("m", mktime(0, 0, 0, date("m") - 6, date("d"), date("Y")));
$date_less_6_months = date("d", mktime(0, 0, 0, date("m") - 6, date("d"), date("Y")));
$date_six_months_ago = date('Y-m-d', strtotime("-6 months"));
現在你可以比較這些與你的數據庫值。 檢查所有日期格式的here。
所以也許你想檢查年,月和日分開。 使用:
$day = date("d", strtotime($date_six_months_ago));
$month = date("m", strtotime($date_six_months_ago));
$year= date("Y", strtotime($date_six_months_ago));
也許你會需要格式化數據庫值,使用下面的SQL:
DATE_FORMAT(date,format)
比方說,下面是從數據庫
$d = '02';
$m = '06';
$y = '2013';
現在免得看到從現在
$d1 = new DateTime($y.'-'.$m.'-'.$d);
$d2 = new DateTime(date("Y-m-d"));
$interval = $d2->diff($d1);
$months = $interval->format('%m months');
的差別現在$個月內將包含在幾個月的差別
在檢查了所有其他的例子後,這個例子似乎對我最有意義,它工作。有點。唯一的問題是,它只顯示不到六個月的日期。將'>'切換到'<'顯示我的日期超過六個月 - 這正是我想要的。現在,我遇到了問題,沒有顯示年,月,日爲空的字段。我怎樣才能做到這一點? – skewbert