programing

PL/SQL에서 날짜 형식을 MM/DD/YYYY에서 YYY-MM-DD로 변경하는 방법은 무엇입니까?

telecom 2023. 7. 4. 21:41
반응형

PL/SQL에서 날짜 형식을 MM/DD/YYYY에서 YYY-MM-DD로 변경하는 방법은 무엇입니까?

는 테블에다같저날열짜있습다니이로 이 있습니다.MM/DD/YYYY서식을 정하다동일한 날짜를 선택하여 다른 테이블에 저장해야 합니다.YYYY-MM-DD형식(예: XSD 날짜 형식).하지만 저는 그것을 할 수 없습니다.다음 쿼리를 사용합니다.

select to_date(date_column,'YYYY-MM-DD') from table;

하지만 저는 여전히 그것을 할 수 없습니다.오류 발생

ORA-01843 : 유효한 달이 아닙니다.

사용하다

select to_char(date_column,'YYYY-MM-DD') from table;

당신이 그것을 잘못 이해한 것처럼 들립니다.기존 데이터가 MM/DD/YYY 형식이면 다음을 수행해야 합니다.

select to_date(date_column,'MM/DD/YYYY') from table;

기존 데이터를 DATE 값으로 변환합니다.(솔직히 날짜로 저장되지 않는 이유가 궁금합니다...)

한 번에 변환을 수행하려면 다음 작업을 수행해야 합니다.

select to_char(to_date(date_column,'MM/DD/YYYY'), 'YYYY-MM-DD') from table;

즉, 각 행에 대해 MM/DD/YYY 형식으로 구문 분석한 다음 YYY-MM-DD 형식으로 다시 포맷합니다.

(하지만 데이터를 처음부터 텍스트로 저장하기보다는 "자연스러운" 유형으로 유지하는 것이 좋습니다.)

여기서 다운로드할 수 있는 Oracle SQL Developer를 사용할 수 있습니다.

작업할 날짜 형식을 정의할 수 있습니다.

ALTER SESSION SET nls_date_format='yyyy-mm-dd';

이제 다음과 같은 쿼리를 수행할 수 있습니다.

SELECT * FROM emp_company WHERE JDate = '2014-02-25'

보다 구체적으로 날짜 형식을 정의하려면 다음과 같이 정의할 수 있습니다.

ALTER SESSION SET nls_date_format='yyyy-mm-dd hh24:mi:ss';

하는방법을 DATE형식으로 하려면 열을다형로으, 그사용냥을 하십시오.TO_CHAR()형식으로 원는하 형 변 다 환 합 니 다 시 식 로 으 니 다 ▁a 합 ▁with ▁it 변 환 ▁to ,DATE예:예:

SELECT TO_DATE(TO_CHAR(date_column, 'DD-MM-YYYY'), 'DD-MM-YYYY') from my_table
select to_date(to_char(ORDER_DATE,'YYYY/MM/DD')) 
from ORDERS;

이렇게 하면 도움이 될 수 있지만 마지막에는 날짜가 아닌 문자열이 표시됩니다.분명히 당신의 포맷 문제는 확실히 해결될 것입니다.

군 시간 형식 지정의 경우

select TO_CHAR(SYSDATE, 'yyyy-mm-dd hh24:mm:ss') from DUAL

--2018-07-10 15:07:15

날짜를 월, 일, 시, 분으로 반올림하려면 다음을 시도할 수 있습니다.

SELECT TO_CHAR( SYSDATE, 'yyyy-mm-dd hh24:mi:ss') "full-date" --2018-07-11 10:40:26
, TO_CHAR( TRUNC(SYSDATE, 'year'), 'yyyy-mm-dd hh24:mi:ss') "trunc-to-year"-- 2018-01-01 00:00:00
, TO_CHAR( TRUNC(SYSDATE, 'month'), 'yyyy-mm-dd hh24:mi:ss') "trunc-to-month" -- 2018-07-01 00:00:00
, TO_CHAR( TRUNC(SYSDATE, 'day'), 'yyyy-mm-dd hh24:mi:ss') "trunc-to-Sunday" -- 2018-07-08 00:00:00
, TO_CHAR( TRUNC(SYSDATE, 'dd'), 'yyyy-mm-dd hh24:mi:ss') "trunc-to-day" -- 2018-07-11 00:00:00
, TO_CHAR( TRUNC(SYSDATE, 'hh'), 'yyyy-mm-dd hh24:mi:ss') "trunc-to-hour" -- 2018-07-11 10:00:00
, TO_CHAR( TRUNC(SYSDATE, 'mi'), 'yyyy-mm-dd hh24:mi:ss') "trunc-to-minute" -- 2018-07-11 10:40:00
from DUAL

형식 리터럴에 대한 도움말은 https://docs.oracle.com/cd/B28359_01/server.111/b28286/functions242.htm#SQLRF52037 에서 찾을 수 있습니다.

이 작업은 다음을 통해 간단하게 수행할 수 있습니다.

select to_char(to_date(date_column, 'MM/DD/YYYY'), 'YYYY-MM-DD') from table

코멘트에 따르면 데이터 테이블의 데이터 유형은 DATE입니다.따라서 단순히 "테이블에서 date_column 선택"을 사용해야 합니다.

이제 선택을 실행하면 .xsd에 필요한 날짜 데이터 유형이 반환됩니다.

날짜의 문화 의존적 서식은 선택 문이 아니라 GUI(대부분의 언어에서 편리한 방법이 있음)에서 작성해야 합니다.

기본적으로 Oracle의 Data in a Date 열은 사용자 정의 형식으로 저장하거나 기본값으로 유지할 수 있습니다.이는 모두 NLS 매개 변수에 따라 다릅니다.

현재 형식은 다음을 통해 확인할 수 있습니다: SELECT SYSATE FROM DUAL;

레코드를 삽입하려고 시도하고 삽입 문이 이 형식이 아닌 경우 ORA-01843: not valid month error(유효한 월 오류)가 표시됩니다.따라서 먼저 문을 삽입하기 전에 데이터베이스 날짜 형식을 변경한 다음(문 삽입의 대량 로드가 있다고 가정함), 스크립트 삽입을 실행합니다.

형식은 ALTER SESSION SET nls_date_format = 'mm/dd/yyyh24:mi:ss';

또한 SQL Developer GUI , (Tools > Preference > database > NLS) 에서 NLS 설정을 변경할 수 있습니다.

참조: http://oracle.ittoolbox.com/groups/technical-functional/oracle-sql-l/how-to-view-current-date-format-1992815

나한테 효과가 있었어요!원하는 날짜 또는 문자열 데이터 형식으로 변환할 수 있습니다.

to_char(TO_DATE(TO_CHAR(end_date),'MM-DD-YYYY'),'YYYY-MM-DD') AS end_date

답장이 늦었지만 for.databse-date-type 다음 줄이 작동합니다.

SELECT to_date(t.given_date,'DD/MM/RRRR') response_date FROM Table T

given_date의 열 유형은 Date입니다.

Yahia를 피기 위해 타임스탬프가 있는 경우 이 기능을 사용하여 타임스탬프를 제거하고 날짜로만 캐스트할 수 있습니다.

TO_CHAR(CAST(DateTimeField AS DATE), 'YYYY-MM-DD')

또는 저의 경우 아래 형식이 필요합니다.

TO_CHAR(CAST(DateTimeField AS DATE), 'YYYYMMDD')

저도 같은 문제가 있었지만 어떤 이유에서인지 CONVERT 기능이 작동하지 않아서 어쩔 수 없이 다음과 같이 처리했습니다.

SELECT
to_char(to_date(TO_CHAR(TRUNC(date1),'DD/MM/YYYY')), 'YYYY-MM-DD')
FROM DUAL;

타임스탬프는 다음과 같습니다.06/10/22 08:56:32,576906

SELECT TO_DATE(TO_CHAR(date_column,'MM/DD/YYYY'), 'YYYY-MM-DD')
FROM table;

컬럼 출력 날짜 형식을 변경해야 할 경우 to_char를 사용하면 날짜가 아닌 문자열을 얻을 수 있습니다.

사용하다

SELECT STR_TO_DATE(date_column,'%Y-%m-%d') from table;

또한 통과합니다.

http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html

언급URL : https://stackoverflow.com/questions/7606745/how-to-change-the-date-format-from-mm-dd-yyyy-to-yyyy-mm-dd-in-pl-sql

반응형