programing

오라클 SQL 테이블의 날짜 업데이트

sourcejob 2023. 4. 4. 21:14
반응형

오라클 SQL 테이블의 날짜 업데이트

SQL 테이블에서 날짜를 업데이트하려고 합니다.Peoplesoft Oracle을 사용하고 있습니다.이 쿼리를 실행할 때:

Select ASOFDATE from PASOFDATE;

2012년 4월 16일 취득

이 쿼리를 실행하려고 했습니다.

UPDATE PASOFDATE SET ASOFDATE = '11/21/2012';

근데 안 되네.

원하는 날짜로 변경하는 방법을 아는 사람 있나요?

이는 날짜 형식에 대해 잘못된 월 값이나 숫자가 아닌 문자(숫자가 예상될 경우)와 같은 오류가 발생한다는 가정에 기초합니다.

데이터베이스에 저장된 날짜에는 형식이 없습니다.클라이언트가 표시할 날짜 형식을 지정하는 날짜를 쿼리할 때 다음과 같이 입력합니다.4/16/2011일반적으로 날짜 선택과 업데이트에는 동일한 날짜 형식이 사용되지만, 이 경우 서로 다른 것으로 보입니다.따라서 클라이언트는 SQL*Plus보다 더 복잡한 작업을 수행하고 있는 것 같습니다.

업데이트를 시도하면 기본 날짜 형식 모델이 사용됩니다.표시 방식 때문에 당신은 그게 그렇게 생각하시는 거죠?MM/DD/YYYY하지만 아닌 것 같아요어떤 모델인지 알 수 있지만 기본 형식 모델이나 암시 형식 모델에는 전혀 의존하지 않는 것이 좋습니다.

이것이 문제인지 여부에 관계없이 항상 날짜 모델을 지정해야 합니다.

UPDATE PASOFDATE SET ASOFDATE = TO_DATE('11/21/2012', 'MM/DD/YYYY');

시간 구성요소를 지정하지 않기 때문에 모든 OracleDATE열에 시간이 포함되어 있습니다(자정이더라도). 날짜 리터럴을 사용할 수도 있습니다.

UPDATE PASOFDATE SET ASOFDATE = DATE '2012-11-21';

현재 값에 시간이 포함되어 있지 않은지 확인해야 할 수도 있지만 열 이름에는 시간이 포함되어 있지 않습니다.

날짜와 시간을 설정하는 방법은 다음과 같습니다.

update user set expiry_date=TO_DATE('31/DEC/2017 12:59:59', 'dd/mm/yyyy hh24:mi:ss') where id=123;

이 SQL이 Peoplesoft 고유의 코드(Application Engine, SQLEXEC, SQLfetch 등)에서 사용되는 경우%Date in metaSQL 을 사용할 수 있습니다.Peopletools는 자동으로 날짜를 애플리케이션이 실행 중인 데이터베이스 플랫폼에서 허용하는 형식으로 변환합니다.

이 SQL을 사용하여 쿼리 분석기(SQLDeveloper, SQLTools 등)에서 백엔드 업데이트를 수행하는 경우 사용되는 날짜 형식이 잘못되었습니다.Oracle은 날짜 형식을 DD-MM-YYY로 예상하고 있으며, 여기서 MMM은 JAN, FEB, MAR 등이 될 수 있습니다.

Alex Pool의 답변에 덧붙이자면, 날짜와 시간은 다음과 같습니다.

    TO_DATE('31/DEC/2017 12:59:59', 'dd/mm/yyyy hh24:mi:ss')

언급URL : https://stackoverflow.com/questions/13497130/updating-a-date-in-oracle-sql-table

반응형