<?php
// 두 날짜 사이의 일 구하기
function getDateStartToLast($startDate, $lastDate) {
$regex = "/^\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[0-1])$/";
if(!(preg_match($regex, $startDate) && preg_match($regex, $lastDate))) return "Not Date Format";
$period = new DatePeriod( new DateTime($startDate), new DateInterval('P1D'), new DateTime($lastDate." +1 day"));
foreach ($period as $date) $dates[] = $date->format("Y-m-d");
return $dates;
}
// 두 날짜 사이의 월 구하기
function getMonthStartToLast($startDate, $lastDate) {
$regex = "/^\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[0-1])$/";
if(!(preg_match($regex, $startDate) && preg_match($regex, $lastDate))) return "Not Date Format";
$period = new DatePeriod( new DateTime($startDate), new DateInterval('P1M'), new DateTime($lastDate." +1 month"));
foreach ($period as $date) {
if($lastDate > $date->format("Y-m") ){
$dates[] = $date->format("Y-m");
}
}
return $dates;
}
$start_date = "2020-12-01";
$end_date = "2020-12-31";
// 두 날짜 사이의 월 구하기
$work_month = getMonthStartToLast($start_date, $end_date);
$work_day = getDateStartToLast($start_date, $end_date);
?>
두 날짜 사이의 모든 날짜를 구한 다음 해당 날짜의 통계를 구하면 해당 기간에 통계 결과가 없어도 데이터는 '0'으로 나타낼 수 있음
//일별 통계
<?php
foreach ($work_day as $k=>$v) {
$date = explode("-", $v);
//해당 날짜의 합계
$sql = "select ifnull(sum(it_ea),0) as sum from tablename WHERE date_time like '{$v}%'";
$row = sql_fetch($sql);
$year = $date[0];
$month = $date[1];
$day = $date[2];
$sum = $row['sum'];
}
?>
'Web > PHP' 카테고리의 다른 글
PHP 두 날짜 사이의 기간 구하기 (0) | 2021.04.02 |
---|---|
또 다른 대형 공급망 공격 될 뻔한 PHP 깃 서버 침해 사건 (0) | 2021.03.30 |
php 2차원 배열 특정 value 값으로 sort하기 (0) | 2021.03.18 |
영카트에서 주문시 받으시는분 삭제하는 방법 (0) | 2020.12.10 |
PHP8 - str_contains .. 문자열에 특정 단어 있는지 확인 (0) | 2020.12.06 |