오라클에서 날짜 다루기
오라클에서 날짜를 다루는 방법은 다양하며, 다음은 기본적으로 알아야 할 몇 가지 중요한 함수와 사용법입니다.
1. 날짜 생성하기
TO_DATE 함수
- 설명: 문자열을 날짜로 변환합니다.
- 예제:
SELECT TO_DATE('2024-01-05', 'YYYY-MM-DD') FROM dual;
SYSDATE 함수
- 설명: 현재 시스템의 날짜와 시간을 반환합니다.
- 예제:
SELECT SYSDATE FROM dual;
2. 날짜 형식 지정하기
TO_CHAR 함수
- 설명: 날짜를 원하는 형식의 문자열로 변환합니다.
- 예제:
SELECT TO_CHAR(SYSDATE, 'YYYYMMDD HH24MISS') FROM dual;
3. 날짜 연산하기
날짜 더하기 및 빼기
- 예제:
SELECT SYSDATE + 7 FROM dual; -- 7일 더하기
SELECT SYSDATE - 7 FROM dual; -- 7일 빼기
개월 수 더하기
- 예제:
SELECT ADD_MONTHS(SYSDATE, 2) FROM dual; -- 2개월 더하기
4. 날짜 간의 차이 계산하기
DATEDIFF 함수
- 설명: 두 날짜 간의 차이를 일(day) 단위로 계산합니다.
- 예제:
SELECT SYSDATE - TO_DATE('2024-01-01', 'YYYY-MM-DD') FROM dual;
5. 날짜 정보 추출하기
EXTRACT 함수
- 설명: 특정 날짜의 년도, 월, 일 등을 추출합니다.
- 예제:
SELECT EXTRACT(YEAR FROM SYSDATE) FROM dual; -- 년도 추출
SELECT EXTRACT(MONTH FROM SYSDATE) FROM dual; -- 월 추출
6. 날짜 비교하기
날짜 비교 연산자
- 예제:
SELECT * FROM your_table WHERE your_date = TO_DATE('2024-01-05', 'YYYY-MM-DD');
SELECT * FROM your_table WHERE your_date > SYSDATE - 7;
7. 주와 요일 다루기
주의 시작일과 종료일 구하기
- 예제:
SELECT TRUNC(SYSDATE, 'IW') AS start_of_week,
TRUNC(SYSDATE, 'IW') + 6 AS end_of_week FROM dual;
현재 요일 구하기
- 예제:
SELECT TO_CHAR(SYSDATE, 'D') FROM dual;
SELECT TO_CHAR(SYSDATE, 'DAY') FROM dual;
8. 분기와 반기 정보 추출하기
현재 분기 구하기
- 예제:
SELECT CEIL(EXTRACT(MONTH FROM SYSDATE) / 3) AS current_quarter FROM dual;
현재 반기 구하기
- 예제:
SELECT CEIL(EXTRACT(MONTH FROM SYSDATE) / 6) AS current_semester FROM dual;
9. 날짜 형식의 변환과 해석
날짜 형식 모델
- 예제:
SELECT TO_CHAR(SYSDATE, 'YYYYMMDD HH24MISS') AS formatted_date FROM dual;
SELECT TO_CHAR(SYSDATE, 'FMDay, FMDDth of FMMonth, YYYY') AS fancy_date FROM dual;
10. 시간대 다루기
시간대 변환
- 예제:
SELECT FROM_TZ(CAST(SYSDATE AS TIMESTAMP), 'UTC') AT TIME ZONE 'Asia/Seoul' AS seoul_time FROM dual;
11. 날짜 관련 기타 함수
LAST_DAY 함수
- 예제:
SELECT LAST_DAY(SYSDATE) FROM dual;
MONTHS_BETWEEN 함수
- 예제:
SELECT MONTHS_BETWEEN('2024-07-05', '2024-01-05') FROM dual;
이 외에도 오라클에서는 많은 날짜 관련 기능을 제공하므로, 실제 개발 상황에 맞게 적절한 함수를 선택하여 사용하면 좋습니다.
'SQL' 카테고리의 다른 글
SQL UPDATE Statement의 간단한 이해 (0) | 2024.01.08 |
---|---|
SQL NULL Values 이해하기 (0) | 2024.01.08 |
SQL INSERT INTO : 기본부터 활용 (0) | 2024.01.04 |
SELECT DISTINCT로 데이터 중복 제거하기 (0) | 2024.01.02 |
(oracle)테이블에서 PK가 아닌 다른 컬럼을 INDEX로 추가하면 속도가 빨라질까? (+오버헤드란?) (0) | 2023.04.20 |
댓글