2011-08-24 91 views
1

我正在設置最近的活動功能,從本週獲取所有用戶活動。不過,我不知道如何從本週開始所有活動,因爲我需要比較現在和一週之前的日期。請你能告訴我我該怎麼做?我正在使用MySQL數據庫來保存所有的信息。我有表格,喜歡,關注,評論和帖子。我顯然需要比較日期以獲取所有表中的所有信息。如何在PHP中比較日期

我在我的MySQL數據庫中插入日期時使用了這種方法。

function uk_date() { 
     $sign = "-"; 
     $h = "0"; 
     $dst = "true"; 
     if ($dst) { 
      $daylight_saving = date('I'); 
      if ($daylight_saving){ 
       if ($sign == "-"){ $h=$h-1; } 
       else { $h=$h+1; } 
      } 
     } 
     $hm = $h * 60; 
     $ms = $hm * 60; 
     if ($sign == "-"){ $timestamp = time()-($ms); } 
     else { $timestamp = time()+($ms); } 
     return $gmdate = gmdate("d/m/Y g:i:s A", $timestamp); 
    } 

另外,在我的分貝字段「日期」是不是一個時間戳,它是從上面的uk_date()方法生成的字符串。這是我不確定如何比較日期的地方。

+1

你看過strtotime函數嗎? –

回答

1
select * from table where datetime_field > now() - interval 7 day 
+0

該字段不是時間戳,它是由uk_date()方法生成的字符串。 –

+0

但建議是 - 這不應該是任何「生成」日期。儘可能以數據的形式存儲在數據庫中,如果談論日期,最簡單的事情總是一個unix時間戳,因爲它本來就是世界上大多數API處理的......(好吧,我知道我們可以討論這個事實,但這不是重點) –

+0

@ XcodeDev;是的,但在我看來,他做的事情太複雜了。 –

1

不完全明白,爲什麼需要那麼複雜,爲什麼與daylight_saving等工作...

是否有可能,你只需存入數據庫調用時間的結果()?然後你將得到unix時間戳,並且很容易與其他所需的unix時間戳相比較。所有的算術都是微不足道的,我是對的嗎?

+0

+1在數據庫中使用UNIX而不是GMT。它更輕(性能),也更易於使用。 – toopay

+0

@yosh kemu請檢查更新後的問題。 –

+0

對不起,我不能同意這一點。存儲任何「d/m/Y g:i:s A」是麻煩的犧牲品。真的,這不會給你帶來好處,還有很多缺點 - 但這當然是我個人的看法。不要存儲任何「生成」日期。 –