본문 바로가기
Programming/SQL

[MySQL] 기간 조회하기 (between)

by 코딩하는 금융인 2023. 2. 5.

안녕하세요.

MySQL에서 기간을 조회하는 방법에 대하여 간단하게 알아보겠습니다.

 MySQL 기간 조회하기

▣ SQL BETWEEN

- BETWEEN문은 SQL에서 범위를 표현하기 위한 쿼리로 자주 사용됨.

- BETWEEN A AND B 의미는 A 이상 B 이하의 범위에 속하는 데이터를 조회하기.

- 단순 숫자 값에도 사용 가능하지만, 날짜에도 적용할 수 있어 기간 조회 시에도 자주 사용됨.

 

: 예시 데이터 test

order_code order_time pay_money pay_yn member_id
387836 2018-04-13T10:20:57Z 4500 y 70955
345477 2017-12-16T03:30:43Z 34200 y 70955
531013 2019-05-16T19:22:28Z 56300 n 70955
593478 2019-11-07T01:32:34Z 4500 y 218095
253089 2017-04-03T04:38:06Z 21400 n 218095
418074 2018-07-07T03:24:23Z 22250 y 192368
57114 2015-10-06T13:03:50Z 56300 y 192368
176732 2016-09-02T06:57:25Z 82520 y 192368
109484 2016-02-28T20:31:45Z 13150 y 192368
412987 2018-06-22T20:44:12Z 53350 n 192368
639937 2020-03-15T08:04:46Z 57900 y 302700
163256 2016-07-27T00:51:49Z 28500 y 216440
490971 2019-01-24T21:36:25Z 24070 n 205394
570774 2019-09-04T20:53:53Z 63700 y 205394
440350 2018-09-07T02:50:13Z 71300 y 258721

 

- 2019년 기간에 주문(order)된 데이터 조회하기

//아래 조건으로 조회시 12월 31일 데이터는 포함되지 않으므로 뒤쪽을 '2020-01-01'로 설정
SELECT * FROM test
WHERE order_time BETWEEN '2019-01-01' and '2020-01-01'

 

- BETWEEN문을 활용하여 연도별 주문건수 확인하기

SELECT 
  count(case when order_time between '2015-01-01' and '2016-01-01' then 1 end) as order_2015,
  count(case when order_time between '2016-01-01' and '2017-01-01' then 1 end) as order_2016,
  count(case when order_time between '2017-01-01' and '2018-01-01' then 1 end) as order_2017,
  count(case when order_time between '2018-01-01' and '2019-01-01' then 1 end) as order_2018,
  count(case when order_time between '2019-01-01' and '2020-01-01' then 1 end) as order_2019,
  count(case when order_time between '2020-01-01' and '2021-01-01' then 1 end) as order_2020
FROM test

 

반응형

댓글