1.拿到本周的所有日期
/*
* 根据当前日期获取本周或上周的日期
* time = 0 返回本周的所有日期
* time = 1 返回上周的所有日期
* 返回日期格式为时间戳
*/
function GetDateForWeek($time = 0) {
$week = date("w");
$date = array();
for ($i = 1; $i < 8; $i++) {
if($i < $week && $time == 0) {
$date[] = date("Y-m-d", time() - ($week - $i) * 24 * 3600);
} if ($i < $week && $time == 1) {
$date[] = date("Y-m-d", time() - ($week - $i + 7) * 24 * 3600);
} if ($i >= $week && $time == 0) {
$date[] = date("Y-m-d",time() - ($week - $i) * 24 * 3600);
}
if ($i >= $week && $time == 1) {
$date[] = date("Y-m-d", time() - ($week - $i + 7) * 24 * 3600);
}
}
return $date;
}
print_r(GetDateForWeek());
2.组织sql语句
(因为存储数据表中的数据为时间戳,所有我这里转为日期格式查询了,本来想直接用时间戳查询的,可是strtotime转出来的时间戳发现有问题,显示该日期的7点,不知道为啥)
表数据截图:
例子1
SELECT
*, DATE_FORMAT(
FROM_UNIXTIME(add_time),
'%Y-%m-%d'
) AS date_add_time
FROM
cms_member_wallet_log
WHERE
DATE_FORMAT(
FROM_UNIXTIME(add_time),
'%Y-%m-%d'
) in('2015-11-10')
上述查询是有问题的,sql查询时将一周日期放入 IN中就是NULL。
这里直接采用SQL查询
语句如下:
SELECT
*, DATE_FORMAT(
FROM_UNIXTIME(add_time),
'%Y-%m-%d'
)
FROM
cms_member_wallet_log
WHERE
YEARWEEK(
FROM_UNIXTIME(
add_time,
'%Y-%m-%d %H:%i:%s'
),
1
) = YEARWEEK(now(), 1)