Develop

[PostgreSQL] 날짜 더하기, 빼기, 일수 차이 구하기 INTERVAL

issuemaker99 2024. 10. 10. 17:25
728x90

PostgreSQL에서 **날짜(Date)**와 시간(Time) 관련 연산을 다루는 방법을 소개하겠습니다. 데이터베이스에서 날짜와 시간 연산은 매우 빈번하게 사용되며, 특정 날짜에 시간을 더하거나 빼는 작업, 두 날짜 사이의 차이를 구하는 등 다양한 기능을 제공합니다. 이번 글에서는 년, 월, 일 단위로 날짜를 더하고 빼는 방법과 두 날짜 간의 일수 차이를 구하는 방법을 예제와 함께 설명하겠습니다.

 

1. PostgreSQL에서 날짜 더하고 빼기

PostgreSQL에서는 날짜에 대한 덧셈과 뺄셈을 간단하게 처리할 수 있습니다. 이를 위해 INTERVAL이라는 특별한 형식을 사용하여 년(year), 월(month), 일(day) 등의 기간을 추가하거나 뺄 수 있습니다.

1.1 날짜에 년도 더하기/빼기

날짜에  단위를 더하거나 빼려면 INTERVAL 'n year'를 사용합니다. 여기서 n은 더하거나 뺄 년도의 수를 나타냅니다.

-- 현재 날짜에서 2년 더하기
SELECT CURRENT_DATE + INTERVAL '2 year' AS new_date;

-- 특정 날짜에서 1년 빼기
SELECT '2023-01-01'::date - INTERVAL '1 year' AS new_date;

 

  • CURRENT_DATE: 현재 날짜를 반환합니다.
  • INTERVAL '2 year': 날짜에 2년을 더합니다.
  • INTERVAL '1 year': 날짜에서 1년을 뺍니다.

1.2 날짜에 월 더하기/빼기

 단위로 더하거나 빼는 방법도 매우 간단합니다. INTERVAL 'n month'를 사용하여 날짜에 특정 개월을 추가하거나 뺄 수 있습니다.

-- 현재 날짜에서 3개월 더하기
SELECT CURRENT_DATE + INTERVAL '3 month' AS new_date;

-- 특정 날짜에서 6개월 빼기
SELECT '2023-01-01'::date - INTERVAL '6 month' AS new_date;

 

  • INTERVAL '3 month': 현재 날짜에 3개월을 더합니다.
  • INTERVAL '6 month': 지정한 날짜에서 6개월을 뺍니다.

1.3 날짜에 일 더하기/빼기

 단위로의 연산은 매우 직관적이며, INTERVAL 'n day'를 사용합니다. 예를 들어, 특정 날짜에 며칠을 더하거나 빼는 경우 유용합니다.

-- 현재 날짜에서 10일 더하기
SELECT CURRENT_DATE + INTERVAL '10 day' AS new_date;

-- 특정 날짜에서 7일 빼기
SELECT '2023-01-01'::date - INTERVAL '7 day' AS new_date;

 

위의 예제는 각각 현재 날짜에 10일을 더하거나, 지정된 날짜에서 7일을 뺀 결과를 보여줍니다.

 

2. 날짜 차이 계산하기

PostgreSQL에서는 두 날짜 간의 차이를 구하는 방법도 매우 간단합니다. 날짜끼리의 뺄셈 연산을 통해 두 날짜 간의 일수 차이를 계산할 수 있습니다.

2.1 두 날짜 간의 일수 차이 구하기

날짜 간의 차이는 date - date로 구할 수 있으며, 결과는 일수로 반환됩니다.

-- 두 날짜 간의 차이 (일수)
SELECT '2024-10-01'::date - '2023-10-01'::date AS days_difference;

 

위 쿼리는 2024년 10월 1일과 2023년 10월 1일 사이의 차이를 일수로 계산합니다. 결과는 365일이 됩니다.

2.2 두 날짜 간의 시간 차이 구하기

날짜 간의 차이를 시간, 분, 초 단위로 계산하고 싶다면 AGE() 함수를 사용할 수 있습니다. AGE() 함수는 두 날짜 사이의 연, 월, 일, 시간 등의 차이를 계산해 줍니다.

-- 두 날짜 간의 차이 (연도, 월, 일 등)
SELECT AGE('2024-10-01'::date, '2023-10-01'::date) AS date_difference;

 

위 쿼리는 두 날짜 사이의 연도, 월, 일 등의 차이를 구합니다. 결과는 1 year로 반환됩니다.

 

3. 날짜 차이를 년, 월, 일 단위로 계산하기

AGE() 함수는 단순히 일수 차이를 넘어서 두 날짜 사이의 정확한 연도, , 을 반환합니다.

예제: 나이 계산하기

AGE() 함수는 특히 나이를 계산하는 데 유용합니다.

-- 생일을 기준으로 나이 계산
SELECT AGE('2024-10-09'::date, '1990-05-15'::date) AS age;

 

위 쿼리는 1990년 5월 15일생의 나이를 2024년 10월 9일 기준으로 계산하여 34 years 4 mons 24 days와 같은 결과를 반환합니다.

 

4. 다양한 날짜 포맷 처리

PostgreSQL에서는 다양한 형식으로 날짜를 입력할 수 있습니다. 문자열로 날짜를 직접 입력할 때는 'YYYY-MM-DD'형식을 사용하며, 시간까지 포함하려면 'YYYY-MM-DD HH:MI:SS' 형식을 사용할 수 있습니다.

예제: 시간까지 포함한 날짜 연산

-- 시간 포함된 날짜에서 5시간 더하기
SELECT '2023-10-01 10:00:00'::timestamp + INTERVAL '5 hour' AS new_time;

 

이 예제는 timestamp 형식으로 시간을 포함한 날짜에서 5시간을 더한 결과를 반환합니다.

 

PostgreSQL의 날짜 및 시간 관련 연산은 매우 강력하고 유연합니다. INTERVAL을 사용하여 날짜에 년, 월, 일을 더하거나 뺄 수 있으며, 두 날짜 간의 차이를 간단히 구할 수 있습니다. 또한 AGE() 함수는 날짜 사이의 차이를 연, 월, 일로 세분화하여 계산할 수 있어 다양한 비즈니스 로직에 활용될 수 있습니다.

LIST