PostgreSQL : INTERVAL

이신성·2024년 11월 1일

Postgres

목록 보기
1/1
post-thumbnail

본 글을 ChatGPT를 활용하여 작성 하였습니다.
만약, 틀린 정보가 있다면 알려주시면 감사하겠습니다 :)

INTERVAL은 PostgreSQL에서 시간 간격(time interval)을 나타내는 데이터 타입으로, 날짜와 시간을 조작하거나 계산할 때 사용된다. 예를 들어, 특정 날짜에 일수나 시간을 더하거나 빼야 할 때 유용합니다. INTERVAL은 연도, 월, 일, 시간, 분, 초 단위로 간격을 지정할 수 있으며, SQL 쿼리에서 다양한 시간 연산에 활용된다.

INTERVAL 기본 구문

SELECT current_date + INTERVAL '1 day';
  • 이 예시는 오늘 날짜에 하루를 더하는 경우이다. INTERVAL 뒤에 간격을 '숫자 단위' 형태로 지정하여 사용한다.

INTERVAL 사용 예시

  1. 날짜 연산
    날짜에 일, 시간 등을 추가하거나 빼는 작업에 사용한다.
    SELECT '2023-10-01'::date + INTERVAL '7 days';
  • 결과: 2023-10-08
  • 2023년 10월 1일에 7일을 더한 날짜를 반환
  1. 시간 계산
    특정 시간에 몇 시간 또는 몇 분을 더하거나 뺄 때 사용할 수 있다.
    SELECT '12:30:00'::time + INTERVAL '2 hours 15 minutes';
  • 결과: 14:45:00
  • 12시 30분에 2시간 15분을 더한 시간이 반환된다.
  1. 나이 계산
    출생일로부터 현재까지의 나이를 계산할 때 AGE() 함수와 함께 INTERVAL을 사용할 수 있다.
    SELECT AGE(current_date, '2000-01-01'::date);
  • 결과: 24 years 10 mons (현재 날짜를 기준으로 계산 2024/11/01)
  • 생년월일로부터 현재까지의 나이를 반환

INTERVAL 활용 생활 예시

  1. 프로모션 기간 계산
  • 예를 들어, 특정 상품의 할인 기간을 일주일 동안 적용하고자 할 때, 오늘 날짜로부터 일주일 후를 구해 자동으로 할인 기간을 설정할 수 있다.
    SELECT current_date + INTERVAL '7 days' AS promotion_end_date;
  • 오늘 날짜에 7일을 더해 프로모션 종료일을 계산
  1. 일정 관리
  • 일정 관리 앱에서 사용자가 설정한 일정에 30분 전 알림을 설정할 때, INTERVAL을 사용하여 알림 시간을 자동으로 계산할 수 있다.
    SELECT '2023-11-01 14:00:00'::timestamp - INTERVAL '30 minutes' AS reminder_time;
  • 일정 시작 시간 30분 전을 계산하여 알림 시간을 설정합니다. 결과는 2023-11-01 13:30:00이 된다.
  1. 구독 만료 날짜 설정
  • 한 달, 혹은 일 년 구독의 만료일을 설정할 때 INTERVAL을 사용할 수 있다. 예를 들어, 구독일로부터 1년 후를 만료일로 지정할 수 있다.
    SELECT subscription_start_date + INTERVAL '1 year' AS subscription_end_date
    FROM subscriptions;
  • 결과: 구독 시작일로부터 1년 후의 날짜를 반환하여 구독 만료일을 계산

INTERVAL로 지원하는 시간 단위

  • year, month, day, hour, minute, second
  • 여러 단위를 복합적으로 사용할 수도 있다.
    SELECT '2023-10-01'::date + INTERVAL '1 year 2 months 3 days';

주의 사항

  1. INTERVAL에 숫자를 곱하거나 나눌 수도 있다.

    SELECT INTERVAL '1 day' * 3;
  • 결과는 3 days가 된다.
  1. INTERVAL을 빼는 경우도 가능하다.
    SELECT '2023-10-01'::date - INTERVAL '1 month';
  • 2023년 10월 1일에서 한 달을 빼서 2023-09-01이 된다.
profile
일본에서 일하는 프로그래머

0개의 댓글