database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 28034 게시물 읽기
No. 28034
date_format 변경
작성자
장성욱(wookyjjang)
작성일
2006-09-25 13:14ⓒ
2006-09-25 13:14ⓜ
조회수
6,699

오라클 마이그레이션 작업 중 아래와 같은 경우의
문제가 발생 했습니다.

//--쿼리--//
?>
$conn = ociplogon ("scott", "tiger", "SID");

$query = "SELECT HIREDATE FROM EMP";
//$query = "SELECT to_char(HIREDATE,'YYYY-MM-DD') AS HIREDATE FROM EMP";
// 위 쿼리를 사용할 상황이 아님
$statement = OCIParse ($conn, $query);
OCIExecute ($statement);

while (OCIFetchInto ($statement, $row, OCI_ASSOC)) {
    echo $row['HIREDATE'];
 echo ("
");
}

//while (OCIFetchInto ($statement, $row, OCI_ASSOC)) {
//    $date = explode("/", $row['HIREDATE']);
// echo("19".$date[0]."-".$date[1]."-".$date[2]);
// echo("
");
//}
// 위 코드문을 사용할 상황도 아님


?>
//--결과--//
80/12/17
81/02/20
81/02/22
81/04/02
81/09/28
81/05/01
81/06/09
87/04/19
81/11/17
81/09/08
87/05/23
81/12/03
81/12/03
82/01/23
//--원하는 결과--//
1980-12-17
1981-02-20
1981-02-22
1981-04-02
1981-09-28
1981-05-01
1981-06-09
1987-04-19
1981-11-17
1981-09-08
1987-05-23
1981-12-03
1981-12-03
1982-01-23


데이터 베이스(oracle,solaris) 설정이나
세션 혹은 컬럼설정 혹은
데이터베이스 클라이언트 설정(apache, php)등에서
방법을 찾을수는 없을까요.?
어디에서 설정을 바꾸어 주어야 할까요.?
설정 변환 후에 어떤 작업들이 필요할까요.?

데이터가 잘못 되었다면 데이터 업데이트(원하는 형식으로)는 할수있습니다.

답변 부탁드립니다.

이 글에 대한 댓글이 총 5건 있습니다.
oracle 계정 profile 에 아래를 추가해 보세요. 물론 막연한 생각입니다 ^^

export NLS_DATE_FORMAT='YYYY-MM-DD'
최기국님이 2006-09-25 13:31에 작성한 댓글입니다. Edit
oracle 계정의 .profile에 
아래와 같이 수정후
export NLS_DATE_FORMAT="YYYY-MM-DD"

DBMS studown 후 다시 start 해 보았습니다.

위와 같이 같은 결과가 나옵니다.
혹시 제가 빠트린 정보가 어떤것이 있을까요.?
장성욱(wookyjjang)님이 2006-09-25 13:49에 작성한 댓글입니다.
oracle 계정의 .profile 수정은 DB 를 내렸다 올리는거와는 상관은 없지만 ^^;
변경된 .profile이 적용되었으나 해결되지 않은걸로 보고...

Oracle Parameter 수정이 제가 아는 마지막 방법이 될 듯 하네요 ^^

init<SID>.ora 파일에 NLS_DATE_FORMAT='YYYY-MM-DD' 를 추가해주세요.
.profile과 Oracle Parameter값을 수정후에도 해결되지 않으면... 저 같이 아무것도 모르는 사람 말고... 다른 분께서 분명 답변을 주실것입니다 ^^;;
최기국님이 2006-09-25 13:59에 작성한 댓글입니다. Edit

답변 감사드립니다.

1.shell>$ORACLE_HOME/dbs/init<SID>.ora는 존재 하지 않았습니다.
2.sql> select * sys.props$ where name='NLS_DATE_FORMAT';

 NAME VALUE$ COMMENT$

NLS_DATE_FORMAT RR/MM/DD Date format


3.sql>update sys.props$ set value$='YYYY-MM-DD' where name='NLS_DATE_FORMAT';

4.sql>  select * from sys.props$ where parameter = 'NLS_DATE_FORMAT';

 NAME VALUE$ COMMENT$

NLS_DATE_FORMAT YYYY-MM-DD Date format
로 변경되면서 위에 원하는 결과가 출력되었습니다.

어느 부분이 해결되었는지 정확히 알 수 없는 머 그런 결과 입니다.

혹시 이부분에 대해서 자세히 알고 계신분은 답변 부탁드립니다.

장성욱(wookyjjang)님이 2006-09-25 18:07에 작성한 댓글입니다.
이 댓글은 2006-09-25 18:09에 마지막으로 수정되었습니다.
NLS_DATE_FORMAT 말 그대로 날짜출력 포멧을 관리자가 지정하는것입니다.
장성욱님께서 주신 질문에 Oracle 버젼이 나와있지 않습니다.
Oracle8i 와 Oracle9i init.ora가 약간 틀리거든요.

Parameter를 변경하는 ( 9i spfile, 8i pfile ) 부분이 장성욱님께서 수행하신 SQL이 돌아가는거라고 보시면 됩니다.
제가 Parameter 수정에 대해선 자세하게 설명 안드린 이유는...너무 많은 설명이 있기에 ^^

어느 부분이 해결되셨는지 모르신다고 하셨는데...
SQL> select sysdate from dual;
-> SPFILE이나 PFILE에 적용된 NLS_DATE_FORMAT 에 따라 결과가 틀려집니다. 만약 .profile에 RR-MM-DD 이고 파라미터에 YYYY-MM-DD 라면 어떨까요?
테스트 해보시기 바랍니다.

PHP 소스인가요??? 언어는 잘 모르지만 디비에서 뿌려주는 결과만 받아서 다시 뿌려주는 소스 같은데 ^^ 그래서 디비 자체의 결과를 원하시는 포멧으로 변경하라고 말씀드린것입니다.

최기국님이 2006-09-25 18:12에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
28037테이블 전부 드랍할수 있는 방법좀... [4]
정진성
2006-09-25
2762
28036몇칠째 삽질중 좀 도와주세요 고수님들 ㅜㅜ [3]
박강수
2006-09-25
1475
28035업무별 과부하찾기
김상욱
2006-09-25
1060
28034date_format 변경 [5]
장성욱
2006-09-25
6699
28033조인에서..
펭귄도사
2006-09-25
1024
28032토드 한글메뉴얼 구할수있을까요?? [6]
펭귄도사
2006-09-25
3062
28031오라클 프로세스가 줄지를 않습니다.. -_- [1]
우정민
2006-09-25
1768
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.049초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다