2012-03-09 126 views
0

我正在使用PHP和MySQL開發Web應用程序。用戶可以在其中執行活動,並將活動與日期和執行活動的用戶一起記錄到數據庫中。我需要一個查詢來查找給定用戶在上週完成的所有活動(日期列是unix時間戳)。上週獲取MySQL數據庫條目

回答

2

這是您需要的查詢。 用真實姓名替換表名和TimeColumn

SELECT * FROM tableName WHERE timeColumn > UNIX_TIMESTAMP() - 24 * 3600 * 7 and UserName = 'givenUserName' 
+0

謝謝,精美的作品。 – ahota 2012-03-09 10:37:52

+0

太棒了。沒關係 – Niros 2012-03-09 12:49:47

0

試試這個

 $lastWeek=strtotime("-1 week");   
     $lastWeekActivityQuery="SELECT * FROM activity WHERE activityDate BETWEEN '$lastWeek' AND NOW() ORDER BY activityDate DESC LIMIT 100 "; 
     $result=mysql_query($lastWeekActivityQuery); 

利用的事實,你是存儲在TIMESTAMP格式的日期

0

使用strtotime()將幫助你正是你需要。考慮到週一的一週的開始,這應該做的伎倆:

$referenceDate = time(); 
$lastWeek = date('-7 days', $referenceDate); 

if (date('w') != 1) { 
    $lastWeekBegins = date('last Monday', $lastWeek); 
} else { 
    $lastWeekBegins = $lastWeek; 
} 

if (date('w') != 0) { 
    $lastWeekEnds = date('next Sunday', $lastWeek); 
} else { 
    $lastWeekEnds = $lastWeek; 
} 

$query = "SELECT * FROM activity WHERE date >= '{$lastWeekBegins}' AND date <= '{$lastWeekEnds}'"; 
1

還有一些不錯的功能DATE_SUB和DATE_ADD

所以你的查詢可以所著的

SELECT * FROM tableName WHERE timeColumn > UNIX_TIMESTAMP(date_sub(now(),interval 1 week)) and UserName = 'givenUserName'