오늘은 MS-SQl을 쓰다가 필요한 쿼리를 찾던 중
TO_CHAR로 된 쿼리를 찾았는데 써보니
MS-SQL용 쿼리가 아니라 ORACLE용 쿼리여서 적용할 수 없었습니다.
그래서 찾던 중 ORACLE의 TO_CAHR 함수를 MS-SQL의 CONVERT 함수로 대체할 수 있다는 것을 찾아서 이렇게 정리해 봅니다.
혹시나 저처럼 필요하신 분은 아래를 참조하시면 되겠습니다!!
출처 :
ORACLE의 TO_CHAR 함수를 MSSQL의 CONVERT 함수로
※ ORACLE에서 날짜를 처리할때는
TO_CHAR(SYSDATE,'YYYY-MM-DD') -> 2003-01-23
TO_CHAR(SYSDATE,'YYYY/MM/DD') -> 2003/01/23
TO_CHAR(SYSDATE,'YYYYMMDD') -> 20030123
※ 반대로 처리할때는 TO_DATE함수를 사용하면 되죠~
※ ORACLE에서 숫자를 처리할때는
TO_CHAR(2500000,'L9,999,999') -> w2,500,000
TO_CHAR(2500000,'9,999,999.99') -> 2,500,000.00
※ 반대로 처리할때는 TO_NUMBER함수를 사용하면 되죠~
※ 이 외에도 활용할 수있는 용도가 무지 많습니다.
※ MSSQL에서 날짜를 처리할때는
CONVERT(VARCHAR(10),GETDATE(),120) -> 2003-01-23
CONVERT(VARCHAR(10),GETDATE(),111) -> 2003/01/23
CONVERT(VARCHAR(8),GETDATE(),112) -> 20030123
※ MSSQL에서 숫자를 처리할때는
CONVERT(varchar(20), convert(money,2500000),1) -> 2,500,000.00
출처 : DBMS별 날짜 포맷변환
1. DBMS 별 시간, 날짜 조회 쿼리
Oracle |
select sysdate from dual; 날짜+시분초 까지 조회가능 |
MS SQL |
select getdate() 날짜 + 밀리초 단위까지 조회가능 |
DB2 UDB |
select current timestamp from sysibm.sysdummy1 날짜+밀리초까지 조회select current date from sysibm.sysdummy1 날짜만 조회 |
2. DBMS 별 default date format
Oracle |
YY/MM/DD (한글) |
MS SQL |
YYY/MM/DD HH:MI:SS (한글) |
DB2 UDB |
YYYY-MM-DD-HH:MI:SS.MMMMMM (TIMESTAMP 타입) |
3. 날짜 포맷 변환표
형식 |
RDBMS |
변환 문법 |
'YYYY.MM.DD' |
Oracle |
TO_CHAR(date_exp, 'YYYY.MM.DD') |
MSSQL |
CONVERT(VARCHAR, date_exp, 102) | |
DB2 |
REPLACE(CHAR(DATE(date_exp),ISO), '-', '.') | |
'HH:MI:SS' |
Oracle |
TO_CHAR(date_exp, 'HH:MI:SS') |
MSSQL |
CONVERT(VARCHAR, date_exp, 108) | |
DB2 |
CHAR(TIME(date_exp) , JIS ) | |
'YYYY/MM/DD' |
Oracle |
TO_CHAR(date_exp, 'YYYY/MM/DD') |
MSSQL |
CONVERT(VARCHAR, date_exp, 111) | |
DB2 |
REPLACE(CHAR(DATE(date_exp), ISO), '-', '/') | |
'YYYYMMDD' |
Oracle |
TO_CHAR(date_exp, 'YYYYMMDD') |
MSSQL |
CONVERT(VARCHAR, date_exp, 112) | |
DB2 |
CHAR(DATE(date_exp)) | |
'HH24:MI:SS' |
Oracle |
TO_CHAR(date_exp, 'HH24:MI:SS') |
MSSQL |
CONVERT(VARCHAR(8), date_exp, 114) | |
DB2 |
CHAR(TIME(date_exp) ) | |
'YYYY.MM.DD HH24:MI' |
Oracle |
TO_CHAR(date_exp, 'YYYY.MM.DD HH24:MI') |
MSSQL |
CONVERT(VARCHAR, date_exp, 102) + ' ' + CONVERT(VARCHAR(5), date_exp, 114) | |
DB2 |
REPLACE(CHAR(DATE(date_exp), ISO), '-', '.') || CAST( TIME(date_exp) AS CHAR(5)) | |
'YYYY/MM/DD HH24:MI:SS' |
Oracle |
TO_CHAR(date_exp, 'YYYY/MM/DD HH24:MI:SS') |
MSSQL |
CONVERT(VARCHAR, date_exp, 111) + ' ' + CONVERT(VARCHAR(8), date_exp, 114) | |
DB2 |
REPLACE(CHAR(DATE(date_exp), ISO), '-', '/') || CAST( TIME(date_exp)) |