2012-12-05 108 views
0

我的數據庫中有一張表,用於存儲用戶輸入作爲開始日期和結束日期之後,我的用戶將不得不選擇一個時間範圍,並且必須在表中顯示那些記錄在這個時間範圍內?在PHP中的時間日期比較

嘗試stritotime();等諸多unctions但不知何故,我不能得到正確的結果..

任何可能的解決方案,將不勝感激。

謝謝!

回答

2

可能有:

SELECT count(*) FROM `table` 
where 
created_at>='2011-03-17 06:42:10' and created_at<='2011-03-17 06:42:50'; 

或使用之間:這取決於

SELECT count(*) FROM `table` 
    where 
    created_at between '2011-03-17 06:42:10' and '2011-03-17 06:42:50'; 

在你的記錄上你想要展示什麼,因爲我沒有看到你的表格,並且例證了你真的要做什麼,所以只需要改變count(*)並獲得你所記錄的記錄螞蟻。

編輯: 如果用戶將選擇一個時間範圍,然後他們將變量

那麼這將是類似的東西

SELECT records FROM `table` 
    where 
    created_at >= '".$var_start_time."' and ended_at <= '".$var_end_time."'; 
+0

看到我上面的評論,謝謝 –

+0

看到我現在編輯 –

+0

當我更好地看看它,我可以理解的過程..我有壞的觀點..我試圖讓比較PHP方面沒有在MySQL –

1

你可以簡單地做到這一點在你的SQL,這是推薦的方法。例如,如果您將這些開始和結束時間存儲在數據庫表中作爲本機DateTime類型,則可以使用DBMS的日期函數將範圍選擇爲UNIX時間戳(如果這是您想要的)。

SELECT UNIX_TIMESTAMP(`start_time`), UNIX_TIMESTAMP(`end_time`) FROM `table` WHERE `start_time` > INTERVAL -1 DAY AND `end_time` < NOW(); 

這是一個例子(假設你使用MySQL),您選擇表中的所有行的列start_time是在過去的24小時內與end_time列到當前服務器時間。

要獲得格式化的日期,然後做轉換到UNIX時間戳在PHP中使用:

SELECT `start_time`, `end_time` FROM `table` WHERE `start_time` > INTERVAL -1 DAY AND `end_time` < NOW(); 

,然後在PHP中,你可以這樣做:

$result['start_time'] = strtotime($result['start_time']); 
$result['end_time'] = strtotime($result['end_time']); 

請記住, strtotime期望格式化日期符合PHP's date parsing rules found here

P.S:你正在尋找的PHP函數是strtotime不是stritotime。