TECH

EXTRACT()

AKA.DM 2022. 5. 19. 08:21
반응형

아래와 같은 데이터가 존재할 때

 

2022년 1월의 순수익을 구려면

SELECT * FROM transactions
WHERE
	created_at >= '2022-01-01'
    AND
    created_at < '2022-02-01';

timestamptz 타입인 경우 ''varchar 형태로 들어가는 것인지 명확하게는 모르겠으나, '' 사이로 지정해야함

 

 

해당 쿼리로 조회 한경우 리스트를 확인하고

SELECT SUM(amount) FROM transactions
WHERE
	created_at >= '2022-01-01'
    AND
    created_at < '2022-02-01';

SUM 펑션을 통해 거래합계를 조회함

 

 

여기서 created_at 등혹 기호가 아닌 EXTRACT 함수를 사용하면

SELECT SUM(amount) FROM transactions
WHERE
	EXTRACT(YEAR FROM created_at) = 2022
	AND
	EXTRACT(MONTH FROM created_at) = 01;

동일한 결과가 나온다.

 

EXTRACT()함수의 경우 시간값에서 특정 속성을 숫자로 추출하는 함수로

EXTRACT(YEAR)를 사용한 경우 오늘을 기준으로 하여 표현하면 2022 가 나오고

EXTRACT(MONTH)를 사용한 경우 05가 노출된다.

 

 

2022년 1월과 2월의 입금금액만 추출한다고 하면

SELECT *
FROM transactions
WHERE 
	amount >= 0
    AND
    EXTRACT(YEAR FROM created_at) = 2022
    AND
    	(
        EXTRACT(MONTH FROM created_at) = 01
        OR
        EXTRACT(MONTH FROM created_at) = 02
        );

요렇게 나오고 * 대신 SUM(amoutn)를 이용하면 조회가 된다. 

반응형