programing

Oracle 날짜를 문자열로 변환

javajsp 2023. 8. 12. 09:50

Oracle 날짜를 문자열로 변환

이 작업을 수행할 때 COL1 문자열 열이 있습니다.

SELECT TO_CHAR(TO_DATE(COL1,'dd-mon-yy'), 'mm/dd/yyyy')
FROM TABLE1

COL1의 데이터는 dd-mon-yy로 표시됩니다. 예를 들어 27-11-89 및 89는 1989이지만 선택하면 11/27/2089로 반환됩니다.

내부 TO_DATE를 해야 합니다. 그렇지 않으면 잘못된 번호 오류가 발생합니다(ORA-01722: 잘못된 번호).

어떻게 2089년 대신 1989년을 보여줄 수 있습니까?제발 도와주세요.

COL1의 데이터는 dd-mon-yy입니다.

아닙니다. 가.DATE열에 형식이 없습니다.표시할 때만 SQL 클라이언트에서 해당 표현으로 변환(암묵적)됩니다.

COL1이라면 정말로이.DATE:사용:사용to_date()그것은 쓸모가 없기 때문에to_date()문자열을 날짜로 변환합니다.

다음은 _char()만 하면 됩니다. 다른 것은 없습니다.

SELECT TO_CHAR(col1, 'mm/dd/yyyy') 
FROM TABLE1

당신의 경우에 일어나는 일은 그 전화가to_date()을 합니다.DATE문자 값으로 변환한 다음(기본 NLS 형식 적용) 다시 날짜로 변환합니다.이러한 이중 암시적 변환으로 인해 일부 정보가 도중에 손실됩니다.


편집

그래서 당신은 문자란에 날짜를 저장하는 큰 실수를 저질렀습니다.그래서 지금 문제가 생기는 겁니다.

가장 좋은 (솔직히 말해서: 유일하게 합리적인) 해결책은 그 열을 다음으로 변환하는 것입니다.DATE그런 다음 암묵적인 데이터 유형 변환에 대한 걱정 없이 값을 원하는 모든 표현으로 변환할 수 있습니다.

하지만 대부분의 대답은 "는 이 모델을 물려받았고, 나는 그것에 대처해야 한다"(항상 잘못된 데이터 유형을 선택하는 데 아무도 책임이 없다)고 할 것입니다. 그러면 당신은 다음을 사용해야 합니다.RRYY:

SELECT TO_CHAR(TO_DATE(COL1,'dd-mm-rr'), 'mm/dd/yyyy')
FROM TABLE1

그 묘기를 부려야 합니다.참고로 나도 변했습니다.monmm당신의 예와 같이27-11-89(NOV와 같은) "단어"가 아닌 해당 달의 숫자가 있습니다.

자세한 내용은 설명서를 참조하십시오. http://docs.oracle.com/cd/B28359_01/server.111/b28286/sql_elements004.htm#SQLRF00215

이거 먹어봐요.오라클은 천년을 구분할 수 있는 이 기능을 가지고 있습니다.

당신이 언급했듯이, 당신의 칼럼이 바르샤르라면, 아래 질문은 1989년을 산출할 것입니다.

표 1에서 to_date(columnn_name, 'dd/mm/sigma')를 선택합니다;

형식 rr이 연도에 사용될 때, oracle에 의해 다음이 수행될 것입니다.

만약 rr->00에서 49까지 ---> 결과가 2000 - 2049가 되고, rr->50에서 99까지 ---> 결과가 1950 - 1999가 될 것입니다.

열이 DATE 유형인 경우(말씀하신 대로) 먼저 문자열로 변환할 필요가 없습니다. 실제로는 암시적으로 먼저 문자열로 변환한 다음 명시적으로 날짜로 변환한 다음 다시 명시적으로 문자열로 변환합니다.

SELECT TO_CHAR(COL1, 'mm/dd/yyyy') FROM TABLE1

열에 표시되는 날짜 형식은 사용 중인 도구(TOAD, SQL Developer 등)의 아티팩트이며 언어 설정입니다.

또 다른 주의할 점은 mm/dd/yyyy로 날짜를 변환하려고 하지만 이 변환된 날짜를 다른 날짜와 비교할 계획이 있다면 to_char가 문자 그대로 문자열로 변환하므로 yyy-mm-dd 형식으로만 변환해야 하며 다른 형식에서는 원하지 않는 결과를 얻을 수 있습니다.자세한 내용은 다음을 참조하십시오: Oracle SQL의 날짜 비교

SELECT * from 
(SELECT TO_CHAR(COL1, 'yyyy-MM-dd') as col1 FROM TABLE1
) T
WHERE col1 ='2021-11-12'

언급URL : https://stackoverflow.com/questions/13591546/oracle-date-to-string-conversion