본문 바로가기
IT/SQL 기초강좌 (PostgreSQL)

45강 SQL 초석 다지기 : PostgreSQL DATE data type

by DoitSQL 2022. 12. 24.
728x90

45강 SQL 초석 다지기 : PostgreSQL DATE data type   

PostgreSQL

SQL 초석 다지기 45강 시작합니다.

 

본 강의는 PostgreSQL Tutorial을 참조합니다.  https://www.postgresqltutorial.com/

 

이번 시간에는

 PostgreSQL DATE data type

에 대해서 알아보는 시간입니다.

 

PostgreSQL DATE 데이터 유형에 대해 설명하고 몇 가지 편리한 날짜 함수를 사용하여 날짜 값을 처리하는 방법을 보여 줍니다.

 


Introduction to the PostgreSQL DATE data type   

날짜 값을 저장하려면 PostgreSQL DATE 데이터 유형을 사용합니다. PostgreesSQL은 4바이트로 날짜 값을 저장합니다. DATE 데이터 유형의 가장 낮은 값과 가장 높은 값은 기원전 4713년 및 서기 5874897년입니다.

날짜 값을 저장할 때 PostgreSQL은 yyy-mm-dd 형식(예: 2000-12-31)을 사용합니다. 또한 이 형식을 사용하여 날짜 열에 데이터를 삽입합니다.

날짜 열이 있는 테이블을 만들고 현재 날짜를 열의 기본값으로 사용하려는 경우 DEFAULT 키워드 뒤에 CURRENT_DATE를 사용할 수 있습니다.

예를 들어, 다음 문은 DATE 데이터 유형이 있는 posting_date 열이 있는 문서 테이블을 생성합니다. posting_date 열은 현재 날짜를 기본값으로 사용합니다.

DROP TABLE IF EXISTS documents;

CREATE TABLE documents (
     document_id serial PRIMARY KEY,
     header_text VARCHAR (255) NOT NULL,
     posting_date DATE NOT NULL DEFAULT CURRENT_DATE
);

INSERT INTO documents (header_text)
VALUES('Billing to customer XYZ');

SELECT * FROM documents;   

다음은 위의 쿼리 출력을 보여줍니다. 데이터베이스 서버의 현재 날짜에 따라 다른 게시 날짜 값을 얻을 수 있습니다.


PostgreSQL DATE functions   

시연을 위해 memployee_id, first_name, last_name, birth_date 및 hire_date 열로 구성된 새 직원 테이블을 만들 예정입니다. 

여기서 birth_date 및 hire_date 열의 데이터 유형은 DATE입니다.

DROP TABLE IF EXISTS employees;

CREATE TABLE employees (
     employee_id serial PRIMARY KEY,
     first_name VARCHAR (255),
     last_name VARCHAR (355),
     birth_date DATE NOT NULL,
     hire_date DATE NOT NULL
);

INSERT
     INTO
     employees (
          first_name,
          last_name,
          birth_date,
          hire_date
     )
VALUES (
     'Shannon',
     'Freeman',
     '1980-01-01',
     '2005-01-01'
),
        (
     'Sheila',
     'Wells',
     '1978-02-05',
     '2003-01-01'
),
        (
     'Ethel',
     'Webb',
     '1975-01-01',
     '2001-01-01'
);   

 

1) Get the current date   

현재 날짜와 시간을 가져오려면 기본 제공 NOW() 기능을 사용합니다. 그러나 (시간 부분 없이) 날짜 부분만 가져오려면 이중 콜론(:)을 사용하여 DATETIME 값을 DATE 값으로 캐스팅합니다.

다음 문은 데이터베이스 서버의 현재 날짜를 반환합니다.

SELECT NOW()::date; 

현재 날짜를 가져오는 또 다른 방법은 다음과 같이 CURRENT_DATE를 사용하는 것입니다.

SELECT CURRENT_DATE;   

 

결과는 yyyy-mm-dd 형식입니다. 그러나 날짜 값을 다양한 형식으로 출력할 수 있습니다.

 

2) Output a PostgreSQL date value in a specific format   

날짜 값을 특정 형식으로 출력하려면 TO_CHAR() 함수를 사용합니다. TO_CHAR() 함수는 두 개의 매개 변수를 사용할 수 있습니다. 첫 번째 매개 변수는 형식을 지정할 값이고 두 번째 매개 변수는 출력 형식을 정의하는 템플릿입니다.

예를 들어 현재 날짜를 dd/mm/yyyy 형식으로 표시하려면 다음 문장을 사용합니다.

SELECT TO_CHAR(NOW() :: DATE, 'dd/mm/yyyy');   

또는 2022년 12월 23일과 같은 형식으로 날짜를 표시하려면 다음 문장을 사용합니다.

SELECT TO_CHAR(NOW() :: DATE, 'Mon dd, yyyy');   

 

3) Get the interval between two dates   

두 날짜 사이의 간격을 가져오려면 마이너스(-) 연산자를 사용합니다.  

다음 예제에서는 오늘 날짜에서 hire_date 열의 값을 빼서 직원의 서비스 일 수를 가져옵니다.

SELECT
     first_name,
     last_name,
     now() - hire_date AS diff
FROM
     employees;   

 

4) Calculate ages in years, months, and days   

현재 날짜의 나이(년, 월, 일)를 계산하려면 AGE() 함수를 사용합니다.

다음 문장은 AGE() 함수를 사용하여 직원 테이블의 직원 연령을 계산합니다.

SELECT
     employee_id,
     first_name,
     last_name,
     AGE(birth_date)
FROM
     employees;        

날짜 값을 AGE() 함수에 전달하면 해당 날짜 값이 현재 날짜에서 차감됩니다. 두 개의 인수를 AGE() 함수에 전달하면 첫 번째 인수에서 두 번째 인수가 차감됩니다.

예를 들어, 2015년 1월 1일의 직원 연령을 얻으려면 다음 문장을 사용합니다.

SELECT
     employee_id,
     first_name,
     last_name,
     age('2015-01-01', birth_date)
FROM
     employees;   

 

5) Extract year, quarter, month, week, day from a date value   

날짜 값에서 연도, 분기, 월, 주, 일을 가져오려면 EXTRACT() 함수를 사용합니다.

다음 문장은 직원의 생년월일에서 연도, 월, 일을 추출합니다.

SELECT
        employee_id,
        first_name,
        last_name,
        EXTRACT (YEAR FROM birth_date) AS YEAR,
        EXTRACT (MONTH FROM birth_date) AS MONTH,
        EXTRACT (DAY FROM birth_date) AS DAY
FROM
        employees; 


PostgreSQL DATE의 데이터 유형과 날짜 값을 처리하는 몇 가지 편리한 기능에 대해 배웠습니다.

 

수고하셨습니다. 다음 강의에서 만나요.


Do it! SQL을 찾아 주셔서 감사합니다. 공감 ♥ , 댓글이 큰 힘이 됩니다.

 

728x90

댓글