C#,Delphi,Oracle,MSSQL 개발자블로그
[Oracle] 날짜타입의 년도표시 Y와 R 의 차이점. 본문
rrrr 과 yyyy 는 어차피 연도 4자리 꽉 채웠으므로 차이 없다고 봐도 무방합니다.
단, 2자리 표시형식인 rr 과 yy 는 연도 앞 두자리가 생략되어 그 의미가 다릅니다.
R은 ROUND 의 의미를 가지고 있습니다.
연도를 반올림하는데 100년 단위로 계산합니다.
- 50년 이상이면 1950 ==> 2000
- 50년 미만이면 1949 ==> 1900
현재년도가 2014년이므로 반올림한 2000 년이 기준이 됩니다.
이 때 입력되는 두자리 연도값이
- 50 미만이면 TO_DATE('140101', 'rrmmdd') ==> 2014-01-01 (기준년도)
- 50 이상이면 TO_DATE('940101', 'rrmmdd') ==> 1994-01-01 (기준년도 전년도)
현재년도가 2014년이 아닌 2054년에 같은 구문을 실행하면
- 기준년도는 2100 년이 되고 결과가 달라집니다.
- TO_DATE('140101', 'rrmmdd') ==> 2114-01-01 (기준년도)
- TO_DATE('940101', 'rrmmdd') ==> 2094-01-01 (기준년도 전년도)
연도는 반드시 2자리가 아닌 4자리로 관리해서 오해의 소지가 없도록 해야겠습니다.
단, 2자리 표시형식인 rr 과 yy 는 연도 앞 두자리가 생략되어 그 의미가 다릅니다.
R은 ROUND 의 의미를 가지고 있습니다.
연도를 반올림하는데 100년 단위로 계산합니다.
- 50년 이상이면 1950 ==> 2000
- 50년 미만이면 1949 ==> 1900
현재년도가 2014년이므로 반올림한 2000 년이 기준이 됩니다.
이 때 입력되는 두자리 연도값이
- 50 미만이면 TO_DATE('140101', 'rrmmdd') ==> 2014-01-01 (기준년도)
- 50 이상이면 TO_DATE('940101', 'rrmmdd') ==> 1994-01-01 (기준년도 전년도)
현재년도가 2014년이 아닌 2054년에 같은 구문을 실행하면
- 기준년도는 2100 년이 되고 결과가 달라집니다.
- TO_DATE('140101', 'rrmmdd') ==> 2114-01-01 (기준년도)
- TO_DATE('940101', 'rrmmdd') ==> 2094-01-01 (기준년도 전년도)
연도는 반드시 2자리가 아닌 4자리로 관리해서 오해의 소지가 없도록 해야겠습니다.
[출처] http://database.sarang.net/?criteria=oracle&subcrit=qna&inc=read&aid=40549
'Programming > Oracle' 카테고리의 다른 글
[Oracle] DB 기본 용어 (SQL, DDL, DML, DCL, TCL) (0) | 2017.05.23 |
---|---|
[Oracle] GROUP BY와 DISTINCT의 구분 (0) | 2017.05.22 |
[Oracle] sysdate와 systimestamp의 차이 (1) | 2017.05.19 |
2-Tier와 3-Tier의 비교 (0) | 2017.05.19 |
[Oracle] dual 테이블이란 ? (0) | 2017.04.14 |
Comments