PL/SQL - 날짜와 시간: 초学者的 가이드
안녕하세요, 미래의 PL/SQL 마법사 여러분! 오늘 우리는 PL/SQL의 날짜와 시간 세계에 흥미로운 여정을 떠납니다. 코드를 한 줄도 작성해본 적이 없다면 걱정하지 마세요 - 저는 당신의 친절한 안내자가 되겠습니다. 우리는 단계별로 이를 탐험할 것입니다. 이 튜토리얼이 끝나면, 당신은 전문가처럼 날짜와 시간을 다룰 수 있을 것입니다!
PL/SQL에서 날짜와 시간 이해하기
구체적인 내용에 들어가기 전에, 왜 날짜와 시간이 프로그래밍에서 중요한지 이야기해보겠습니다. 생일 알림 앱이나 항공 예약 시스템을 개발하는 상상해보세요. 당신은 항상 날짜를 다루어야 할 것입니다! 그래서 PL/SQL의 날짜와 시간 함수가 유용합니다.
간단한 역사 수업
Oracle, PL/SQL을 개발한 회사가 1970년대부터 날짜를 다루기 시작했你知道吗? 대부분의 독자들이 그보다 젊습니다! 연간, 그들은 날짜와 시간 처리를 매우 정밀하고 유연하게 만들었습니다.
날짜시간 및 간격 데이터 유형의 필드 값
기본적인 내용부터 시작해보겠습니다. PL/SQL에서 시간을 다루는 두 가지 주요 범주가 있습니다: 날짜시간(Datetime)과 간격(Interval).
날짜시간 데이터 유형
날짜시간 유형은 특정 시점을 나타냅니다. 그것을 스냅샷으로 생각해보세요. 주요 날짜시간 유형은 다음과 같습니다:
- DATE
- TIMESTAMP
- TIMESTAMP WITH TIME ZONE
- TIMESTAMP WITH LOCAL TIME ZONE
간격 데이터 유형
간격 유형은 시간의 지속 기간을 나타냅니다. 두 시점 사이의 거리를 측정하는 것을 생각해보세요. 주요 간격 유형은 다음과 같습니다:
- INTERVAL YEAR TO MONTH
- INTERVAL DAY TO SECOND
다음 표는 이 유형들을 요약합니다:
데이터 유형 | 설명 | 예시 |
---|---|---|
DATE | 세기, 연도, 월, 일, 시, 분, 초를 포함한 날짜 | 01-JAN-2023 12:00:00 |
TIMESTAMP | 분할초를 포함한 날짜와 시간 | 01-JAN-2023 12:00:00.000000 |
TIMESTAMP WITH TIME ZONE | 시간대를 포함한 타임스탬프 | 01-JAN-2023 12:00:00.000000 -05:00 |
TIMESTAMP WITH LOCAL TIME ZONE | 세션 시간대에 상대적인 타임스탬프 | 01-JAN-2023 12:00:00.000000 |
INTERVAL YEAR TO MONTH | 연도와 월의 기간 | INTERVAL '1-3' YEAR TO MONTH |
INTERVAL DAY TO SECOND | 일, 시, 분, 초의 기간 | INTERVAL '2 12:30:00' DAY TO SECOND |
날짜시간 데이터 유형과 함수
이제 날짜시간 유형을 알고 있는 만큼, 그들을 어떻게 사용하는지 배워보겠습니다!
DATE와의 작업
DATE 유형은 가장 흔히 사용됩니다. 그것은 세기, 연도, 월, 일, 시, 분, 초를 저장합니다.
다음 예제를 살펴보겠습니다:
-- 현재 날짜 가져오기
SELECT SYSDATE FROM DUAL;
-- 현재 날짜에 7일 더하기
SELECT SYSDATE + 7 FROM DUAL;
-- 두 날짜 간의 차이 구하기
SELECT TO_DATE('2023-12-31', 'YYYY-MM-DD') - SYSDATE AS days_until_new_year FROM DUAL;
첫 번째 예제에서, 우리는 SYSDATE를 사용하여 현재 날짜를 가져옵니다. 컴퓨터에 "오늘은 무슨 날짜야?"라고 물어보는 것과 같습니다.
두 번째 예제는 날짜 연산이 얼마나 쉬운지 보여줍니다. 오늘 날짜에 7일을 더합니다. 일주일 동안의 휴가를 계획할 때 매우 유용할 것입니다!
세 번째 예제는 새해 전야까지 몇 일이 남았는지 계산합니다. 우리는 TO_DATE를 사용하여 문자열을 날짜로 변환한 후, 오늘 날짜에서 뺍니다.
TIMESTAMP과의 작업
TIMESTAMP은 DATE의 더 정밀한 사촌입니다. 분할초를 포함하여 마이크로초 단위로 시간을 추적하는 것이 좋습니다.
다음 예제를 살펴보겠습니다:
-- 현재 타임스탬프 가져오기
SELECT SYSTIMESTAMP FROM DUAL;
-- 현재 타임스탬프에 3시간 더하기
SELECT SYSTIMESTAMP + INTERVAL '3' HOUR FROM DUAL;
-- 타임스탬프에서 날짜 부분 추출
SELECT TRUNC(SYSTIMESTAMP) FROM DUAL;
SYSTIMESTAMP는 마이크로초 정밀도로 현재 날짜와 시간을 제공합니다. 컴퓨터에 고급 시계를 착용한 것과 같습니다!
두 번째 예제는 타임스탬프에 시간 간격을 더하는 방법을 보여줍니다. 어떤 과정이 완료되는 데 얼마나 오래 걸리는지 추적하는 데 유용할 수 있습니다.
마지막 예제는 TRUNC를 사용하여 타임스탬프에서 시간 부분을 제거하고 날짜만 남깁니다. 날짜에만 관심이 있다면 매우 유용합니다.
간격 데이터 유형과 함수
간격은 시간의 지속 기간을 측정하는 데 매우 유용합니다. 그들을 실제로 사용해보겠습니다!
INTERVAL YEAR TO MONTH
이 간격 유형은 더 긴 기간을 측정하는 데 적합합니다. 연령이나 계약 기간 등을 생각해보세요.
-- 연령 계산
SELECT
'John Doe' AS name,
TO_DATE('1990-05-15', 'YYYY-MM-DD') AS birthdate,
SYSDATE AS current_date,
EXTRACT(YEAR FROM SYSDATE) - EXTRACT(YEAR FROM TO_DATE('1990-05-15', 'YYYY-MM-DD'))
|| ' years ' ||
EXTRACT(MONTH FROM SYSDATE) - EXTRACT(MONTH FROM TO_DATE('1990-05-15', 'YYYY-MM-DD'))
|| ' months' AS age
FROM DUAL;
이 예제는 누군가의 연령을 연도와 월로 계산합니다. 우리는 EXTRACT를 사용하여 날짜의 연도와 월을 추출한 후, 간단한 산술 연산을 수행합니다. 마법처럼 보일 수 있지만, PL/SQL의 지능적인 사용입니다!
INTERVAL DAY TO SECOND
이 간격 유형은 짧은 기간을 측정하는 데 적합합니다. 어떤 작업이 완료되는 데 걸린 시간을 측정하는 등을 생각해보세요.
-- 작업 지속 시간 계산
DECLARE
start_time TIMESTAMP;
end_time TIMESTAMP;
duration INTERVAL DAY TO SECOND;
BEGIN
start_time := SYSTIMESTAMP;
-- 시간이 걸리는 작업 시뮬레이션
DBMS_SESSION.SLEEP(5);
end_time := SYSTIMESTAMP;
duration := end_time - start_time;
DBMS_OUTPUT.PUT_LINE('Task duration: ' || duration);
END;
/
이 예제는 작업의 지속 시간을 측정합니다. 우리는 시작 시간과 종료 시간을 기록하고, 그 차이를 계산하여 지속 시간을 얻습니다.
결론
축하합니다! PL/SQL의 날짜와 시간 세계에 첫 걸음을 뗐습니다. 우리는 기본 데이터 유형, 날짜와 타임스탬프를 다루는 방법, 그리고 간격을 사용하는 방법을 다루었습니다.
기억하시오, 연습이 완벽을 이루는 열쇠입니다. 이 예제들을 연습하고, 수정하고, 무엇이 일어나는지 보세요. 얼마 지나지 않아, 당신은 경험 많은 프로그래머처럼 날짜와 시간을 다루게 될 것입니다!
계속 코딩하고, 계속 배우고, 가장 중요한 것은 즐겁게 하세요! PL/SQL을 즐기는 동안 시간이 빠르게 지나가기 마련이니까요! ?
Credits: Image by storyset