我正在使用PHP和MySQL开发一个Web应用程序。用户可以在其中执行活动,并将活动记录到数据库中,其中包含日期和执行活动的用户。我需要一个查询来查找给定用户在上周完成的所有活动(日期列是一个unix时间戳)。
答案 0 :(得分:2)
这是您需要的查询。 用实名
替换表名和时间列SELECT * FROM tableName WHERE timeColumn > UNIX_TIMESTAMP() - 24 * 3600 * 7 and UserName = 'givenUserName'
答案 1 :(得分:1)
还有很好的函数date_sub和date_add
因此您的查询可以写为
SELECT * FROM tableName WHERE timeColumn > UNIX_TIMESTAMP( date_sub(now(),interval 1 week)) and UserName = 'givenUserName'
答案 2 :(得分: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格式存储日期的事实
答案 3 :(得分: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}'";