PostgreSQL의 DATEADD()에 대한 대안

  1. SQL의 DATEADD() 함수
  2. PostgreSQL에서 DATEADD() 대신 +- 연산자 사용
  3. PostgreSQL에서 DATEADD() 대신 INTERVAL 데이터 유형 사용
PostgreSQL의 DATEADD()에 대한 대안

이 문서에서는 PostgreSQL의 DATEADD() 함수에 대한 대안에 대해 설명합니다.

SQL의 DATEADD() 함수

제품이 만료되는 데 걸리는 일수와 함께 데이터베이스에 저장된 제품의 제조 날짜가 있다고 가정합니다. 다음 표를 통해 이를 증명할 수 있습니다.

Create table product
(
name varchar(30) not null,
manufacture_date date,
expires_in int,
constraint PK_PRODUCT primary key (name)
);

이제 제품의 샘플 데이터로 이 테이블을 채우겠습니다.

insert into product values ('Fruit Juice', '2022-08-24', 10);

출력:

PostgreSQL DATEADD - 출력 1

이 데이터에서 우리는 제품이 10일 후에 만료된다는 것만 알고 있지만 정확한 만료 날짜는 모릅니다. 주어진 데이터에서 계산할 수 있는 방법이 있습니까?

SQL 서버에는 주어진 날짜에 날짜 간격을 추가하는 데 도움이 되는 DATEADD() 함수가 있습니다. 예를 들어 SQL 서버에서 다음 쿼리를 실행할 수 있습니다.

SELECT DATEADD(day, 1, '2022-08-26') as Next_Day;

출력:

PostgreSQL DATEADD - 출력 2

출력은 지정된 날짜에 1일을 더한 결과를 반환했습니다. 마찬가지로 DATEADD() 함수를 사용하면 월 및 연도와 같은 다른 유형의 날짜 간격을 추가할 수 있습니다.

DATEADD() 함수를 갖는 것은 날짜의 덧셈과 뺄셈이 숫자만큼 간단하지 않기 때문에 유용합니다. 월과 연도의 값은 특정 일 이후에 증가해야 하며 일도 일정 시간이 지나면 1부터 다시 시작해야 한다는 점을 기억해야 합니다.

그러나 PostgreSQL은 SQL 서버와 유사한 DATEADD() 기능을 제공하지 않습니다. 그렇다면 PostgreSQL에서 필수 날짜 계산을 어떻게 수행합니까?

이 기사에서는 PostgreSQL의 DATEADD() 함수에 대한 대안에 대해 설명합니다.

PostgreSQL에서 DATEADD() 대신 +- 연산자 사용

이를 수행하는 한 가지 방법은 정수 덧셈 및 뺄셈에서와 같이 +- 연산자를 사용하는 것입니다. + 연산자를 사용하여 특정 일수를 날짜에 추가하는 방법을 살펴보겠습니다.

SELECT date '2022-08-24' + 10 as Expiration_Date;

그러면 다음과 같은 출력이 생성됩니다.

PostgreSQL DATEADD - 출력 3

예상대로 지정된 날짜에 10일이 추가된 것을 확인할 수 있습니다. 이 쿼리를 작성하는 또 다른 방법은 다음과 같으며 동일한 결과를 생성합니다.

SELECT date '2022-08-24' + integer 10 as Expiration_Date;

출력:

PostgreSQL DATEADD - 출력 4

다음으로 +- 연산자를 사용하여 시간을 거슬러 올라가 날짜에서 주어진 일 수를 빼는 방법을 살펴보겠습니다. 이를 수행하는 첫 번째 방법은 아래와 같이 + 연산자를 사용하고 음의 정수 값을 제공하는 것입니다.

SELECT date '2022-09-03' + -10 as Manufacture_Date;

또는

SELECT date '2022-09-03' + integer -10 as Manufacture_Date;

출력은 아래와 같습니다.

PostgreSQL DATEADD - 출력 5

두 번째 방법은 - 연산자를 사용하여 빼려는 일 수를 지정하는 것입니다. 이는 다음과 같은 방식으로 수행됩니다.

SELECT date '2022-09-03' - 10 as Manufacture_Date;

또는

SELECT date '2022-09-03' - integer 10 as Manufacture_Date;

출력은 아래와 같습니다.

PostgreSQL DATEADD - 출력 6

+- 연산자를 사용하는 이 방법은 특정 일 수만 추가해야 하는 경우에 유용합니다.

날짜에 2개월을 추가하려면 어떻게 해야 합니까? 언제든지 2개월을 며칠로 변환한 다음 + 연산자를 사용하여 추가할 수 있지만 이는 긴 프로세스입니다.

또는 INTERVAL 데이터 유형을 사용하여 날짜 간격을 직접 추가할 수 있습니다. 이 방법은 아래에 설명되어 있습니다.

PostgreSQL에서 DATEADD() 대신 INTERVAL 데이터 유형 사용

INTERVAL 데이터 유형은 일, 월, 년, 주 및 시간을 시, 분, 초 단위로 저장합니다. 몇 가지 샘플 쿼리를 실행하여 각각이 어떻게 사용되는지 보여드리겠습니다.

일 간격

다음과 같은 방법으로 특정 날짜 수를 날짜에 추가할 수 있습니다.

SELECT date '2022-08-24' + INTERVAL 10 day as Expiration_Date;

이는 다음과 같은 결과를 제공합니다.

PostgreSQL DATEADD - 출력 7

출력이 시간대 없이 타임스탬프로 표시되는 것을 볼 수 있습니다. 이는 INTERVAL 데이터 유형이 시간 값도 처리하기 때문에 쿼리에 지정된 날짜가 날짜 및 시간 값을 모두 타임스탬프로 갖도록 변환되었기 때문입니다.

개월 간격

다음과 같은 방법으로 특정 개월 수를 날짜에 추가할 수 있습니다.

SELECT date '2022-08-24' + INTERVAL 2 month as Expiration_Date;

이는 다음과 같은 결과를 제공합니다.

PostgreSQL DATEADD - 출력 8

년 간격

다음과 같은 방법으로 특정 연도를 날짜에 추가할 수 있습니다.

SELECT date '2022-08-24' + INTERVAL 1 year as Expiration_Date;

이는 다음과 같은 결과를 제공합니다.

PostgreSQL DATEADD - 출력 9

주 간격

다음과 같은 방법으로 특정 주 수를 날짜에 추가할 수 있습니다.

SELECT date '2022-08-24' + INTERVAL 1 week as Expiration_Date;

이는 다음과 같은 결과를 제공합니다.

PostgreSQL DATEADD - 출력 10

여러 날짜 간격

INTERVAL 데이터 유형을 사용하여 한 번에 여러 유형의 날짜 간격을 추가할 수도 있습니다. 아래에 예가 나와 있습니다.

SELECT date '2022-08-24' + INTERVAL 1 week 2 day as Expiration_Date;

이는 다음과 같은 결과를 제공합니다.

PostgreSQL DATEADD - 출력 11

참고: 이 외에도 추가할 정확한 시간, 분 또는 초를 지정하여 INTERVAL 데이터 유형을 사용하여 날짜에 시간 간격을 추가할 수도 있습니다.

변수의 날짜 간격

기사 시작 부분에서 제조 날짜의 저장된 값과 만료까지의 일 수에서 만료 날짜를 계산하는 예를 설명했습니다. 변수에 저장된 값을 사용하여 날짜 계산을 수행하는 방법을 살펴보겠습니다.

구문은 다음과 같습니다.

SELECT manufacture_date + expires_in * INTERVAL '1 day' as Expiration_Date FROM product;

이 쿼리에서는 expires_in 변수에 저장된 값을 날짜를 나타내는 INTERVAL로 변환했습니다. 이는 다음과 같은 결과를 제공합니다.

PostgreSQL DATEADD - 출력 12

마찬가지로 정수로 저장된 값을 월, 연, 주로 변환하고 날짜 계산을 수행할 수도 있습니다.

이것은 PostgreSQL의 DATEADD() 함수에 대한 대안에 대한 논의를 요약한 것입니다. 계속 공부하다!

튜토리얼이 마음에 드시나요? DelftStack을 구독하세요 YouTube에서 저희가 더 많은 고품질 비디오 가이드를 제작할 수 있도록 지원해주세요. 구독하다
작가: Bilal Shahid
Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub

관련 문장 - PostgreSQL Date