2011-03-28 479 views
0

選擇新的記錄我想選擇,因爲他們過去一年通過日期時間

$goodate = date('Y-m-d h:i:s', mktime(0, 0, 0, date("m"), date("d"), date("Y")-1)); 
$sqlstmt = "SELECT * FROM #__mytable WHERE id=".$uid." AND recdate > ".$goodate.'"' ; 

內recdate記錄,但我發現沒有任何記錄。

我在做什麼錯?

回答

1
$sqlstmt = "SELECT * FROM #__mytable 
      WHERE id=".$uid." 
       AND recdate > ADDDATE(CURDATE(), INTERVAL -1 YEAR)"; 
0

如果要以編程方式執行此操作,DateTime對象是一個很好的工具。

 $date = new DateTime(); 
     $gooddate = $date->sub(DateInterval::createFromDateString('1 year')); 
     $sql = "SELECT * FROM #__mytable WHERE id=".$uid." AND recdate > ".$goodate->format('Y-m-d').'"'; 

這假定你的日期字段是mysql類型DATE。如果沒有,則有類似的DateTime方法用於輸出unix時間戳,並且format()方法接受date()所做的任何格式化字符串。

0
$sql = " 
select * 
from #__mytable 
where 
    id = $uid 
    and 
    date_format(recdate, '%Y') = date_format(adddate(curdate(), interval -1 year), '%Y') 
"