2012-03-09 4 views
0

Я работаю с PHP и MySQL для разработки веб-приложения. Пользователи могут выполнять в нем действия, а действия регистрируются в базе данных с датой и пользователем, который выполнял эту операцию. Мне нужен запрос, который находит все действия, выполненные данным пользователем на прошлой неделе (столбец даты - это временная метка unix).Получить записи базы данных MySQL за последнюю неделю

ответ

2

Это необходимый вам запрос. заменить TABLENAME и TimeColumn с реальными именами

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

Спасибо, прекрасно работает , – ahota

+0

большой. Пожалуйста – Niros

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); 

Making использовать тот факт, что вы хранящий даты в формате 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

Таким образом, ваш запрос может быть writed в

SELECT * FROM tableName WHERE timeColumn > UNIX_TIMESTAMP(date_sub(now(),interval 1 week)) and UserName = 'givenUserName' 
Смежные вопросы