월 계산을 할려고 하는되요 문의 드립니다.

월 계산을 할려고 하는되요 문의 드립니다.

QA

월 계산을 할려고 하는되요 문의 드립니다.

본문

 

목적은 

 

매월 전월 26에서 ~ 현재월 25일 정산처리 할려고 하는되요

 

매월 합산하는 쿼리는 

--

SELECT CONCAT(YEAR(ct_select_time),'-',MONTH(ct_select_time)) AS ym, SUM(pt_sale)
FROM g5_shop_cart
WHERE YEAR(ct_select_time) = 2023 AND ct_status = '완료' AND ct_select = '1' AND pt_id='ID'
GROUP BY ym 

--

결과

988402489_1686278378.263.png

 

위처럼 하면 매월 1일 부터 마지막인거 같습니다.

 

특정날자로 매월 합산 값 가져오는 방법이 있을까요?

 

고수님들 조언 구합니다.

 

이 질문에 댓글 쓰기 :

답변 5

이렇게 해보는건 어떠실까요?


$currentDate = date("Y-m-d");
$startDate = date("Y-m", strtotime($currentDate . " -1 month")) . "-26";
$endDate = date("Y-m") . "-25";


SELECT CONCAT(YEAR(ct_select_time),'-',MONTH(ct_select_time)) AS ym, SUM(pt_sale)
FROM g5_shop_cart
WHERE ct_select_time >= '시작일' AND ct_select_time <= '종료일'
  AND ct_status = '완료' AND ct_select = '1' AND pt_id='ID'
GROUP BY ym

$currentDate = date("Y-m-d");
$startDate = date("Y-m", strtotime($currentDate . " -1 month")) . "-26";
$endDate = date("Y-m") . "-25";

 

SELECT CONCAT(YEAR(ct_select_time),'-',MONTH(ct_select_time)) AS ym, SUM(pt_sale)
FROM g5_shop_cart
WHERE (1) AND `ct_select_time` >= '{$startDate}' AND `ct_select_time` <= '{$endDate}'
  AND `ct_status` = '완료' AND `ct_select` = '1' AND `pt_id`='ID'
GROUP BY ym
 

소스코드는 제이앤 님껄 참조했습니다.

특정날자로 매월 합산 값 가져오는 방법이 있을까요?

== 여기서 특정" 날짜라는 것이

매월 전월 26에서 ~ 현재월 25일 정산처리 할려고 하는되요

== 이걸 말씀하시는 건가요?

1. g5_shop_cart DB 테이블에 새 칼럼을 추가합니다. ex) ct_ym (정산월)

 

2. 해당 DB 테이블에 값이 저장되는 부분(파일)에서, ct_ym 을 미리 계산하여 넣어줍니다.

ex.

2023년 5월 25일에 저장되는 경우 => ct_ym : '2023-5'

2023년 5월 27일에 저장되는 경우 => ct_ym : '2023-6'

 

if (date('j') < 26)

  $ct_ym = date('Y-n');

else

  $ct_ym = date('Y-n', strtotime('+1 month'));

 

3. 합산쿼리

select ct_ym, sum(pt_sale)

  from g5_shop_cart

 where ct_select_time >= '2023'

    and ct_status = '완료'

    and ct_select = '1'

    and pt_id='ID'

 group by ct_ym

 order by 1


SELECT 
    CONCAT(YEAR(ct_select_time), '-', LPAD(MONTH(ct_select_time) + (CASE WHEN DAY(ct_select_time) < 26 THEN 0 ELSE 1 END), 2, 0)) g
    -- CONCAT(YEAR(ct_select_time),'-',MONTH(ct_select_time)) AS ym
    , SUM(pt_sale)
FROM g5_shop_cart
WHERE YEAR(ct_select_time) = 2023 AND ct_status = '완료' AND ct_select = '1' AND pt_id='ID'
-- GROUP BY ym ;
GROUP BY g
HAVING SUBSTR(g, -2, 2) != '13';
답변을 작성하시기 전에 로그인 해주세요.
전체 16,791
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT