쓸 일이 많은지는 잘 모르겠네요.
우선 DB에 있는 데이터를 불러 올 때 정해진 기간에 해당하는 데이터를 불러오는 것은 그냥 쿼리에 date between 을 넣어서 하면 되긴 합니다.
문제는 각 날짜별로 데이터를 취합해야 할 때 인데, 이런저런 방법을 다 써봤지만 뭔가 불편하고 귀찮더군요
그래서 일단 시작~끝 날짜를 지정해주면 배열로 각 날짜를 반환하는 함수를 만들어 봤습니다.
function getDaysArray($sdate, $edate){
$array_days = array();
$dt_sdate = new DateTime($sdate);
$dt_edate = new DateTime($edate);
$dt_today = new DateTime(date('Y-m-d'));
$diff = date_diff($dt_sdate, $dt_edate);
$diff_today_edate = date_diff($dt_edate, $dt_today);
$date_interval_sdate_edate = ($diff->days);
$date_interval_today_edate = $diff_today_edate->days;
for($i=$date_interval_sdate_edate; $i>=0; $i--){
array_push($array_days, date('Y-m-d', strtotime('-'.($date_interval_today_edate + $i).' days')));
}
return $array_days;
}
간단히 설명 드리자면
new DateTime 는 date('Y-m-d'); 같은 식으로 만들어진 값을 날짜형으로 변환해 주는 거라고 보시면 됩니다.
date_diff에서는 날짜형(정확한 명칭이?)일 때만 사용이 가능한 거 같습니다.
$sdate, $edate 의 경우 '2020-06-25' 와 같은 형식의 값이 들어가야 됩니다.
date('Y-m-d'); 의 결과값입니다.
시작일과 종료일의 날짜 차이를 구하고
종료일과 오늘의 날짜 차이를 구한 후
date() 함수를 이용해 각 날짜를 구하는 방법입니다.
for문에는 가장 오래된 날짜부터 나올 수 있도록 시작값 등을 지정해 뒀으니 사용하실 때 참고해 주세요.
'Programming > PHP' 카테고리의 다른 글
[PHP] 문자열 다루기 - 1. 길이 구하기(strlen), 잘라내기(substr) (0) | 2022.07.05 |
---|---|
[jQuery]ajax 이용해서 PHP 와 통신하기 | 동적 select 예제 (0) | 2020.10.13 |
[HTML/PHP]DB 데이터 불러와서 표시하기 테이블로 표시하기 (0) | 2019.08.30 |
[PHP, MySQL]엑셀 파일 업로드 및 쿼리 적용하기 (0) | 2019.08.20 |
[PHP] 연산자 정리 및 간단한 예제 (0) | 2019.05.29 |