2011-07-01 5 views
1

Oracle Express 데이터베이스를 사용하고 있는데 어떻게 날짜 형식을 변경할 수 있습니까? 을 dd-mm-yyyy에서 dd-mm-yyyy hh-mm으로 변경하는 방법을 알고 싶습니다. 또한, 나는 alter session에 대해 들었지만 Perl에서 사용하는 방법을 모르겠습니다. Perl 및 Oracle DB - help

내가 지금까지 한 일이다 : 들어오는 날짜 문자열이 mm-yyyy 형식 인 경우

my $sth = $dbh->prepare("INSERT INTO Perl 
          (A_FIELD,B_FIELD,C_FIELD,TIME_STAME) 
         VALUES 
          (?,?,?,TO_DATE(?,'DD/MM/YYYY HH24:MI'))"); 

답변

0

은 다음 날짜로 문자열을 변환 (TO_DATE(?,'MM-YYYY')) 아래 문을 사용할 수 있습니다 :

$sth = $dbh->prepare("INSERT INTO Perl (A_FIELD,B_FIELD,C_FIELD,TIME_STAME) VALUES (?,?,?,TO_DATE(?,'MM-YYYY'))"); 
3

오라클의 날짜 필드는 표시를 위해 포맷되지 않습니다. 입력/출력에서 ​​변환하는/internal format입니다. Oracle 날짜 데이터 유형 열에 날짜를 저장하는 경우 format model 문자열을 사용하여 TO_DATE 함수에 날짜 - 시간을 설명하여 문자열을 내부 형식으로 변환합니다. 오라클은 문자열을 내부 형식으로 해석합니다. 날짜를 표시 할 필요가있을 때 역순으로 수행합니다. TO_CHAR 함수에 다시 형식 모델을 제공하여 날짜를 표시하는 방법을 oracle에 알립니다.

예를 들어 설명하기 위해 값을 저장하지 않고 dd-mm-yyyy를 dd-mm-yyyy hh-mm으로 변환 할 수 있습니다 (시간 분 표시를 의미한다고 가정합니다. 분의 형식 모델은 ' 귀하의 예제와 함께, 당신의 날짜의 시간 부분 입력에 제공되지

SQL> SELECT TO_CHAR(TO_DATE('01-01-2020','DD-MM-YYYY'),'DD-MM-YYYY HH-MI') mydate 
     FROM DUAL; 

MYDATE 
---------------- 
01-01-2020 12-00 

하는 것으로, 그래서 자정까지 기본값 : MM '이후,'MI)의 달입니다. 날짜 열에서 시간 값을 저장하려면, 당신은 당신의 입력에 시간 값을 제공해야합니다

SQL> SELECT TO_CHAR(TO_DATE('01/01/2020 10:13','DD/MM/YYYY HH:MI'),'DD-MM-YYYY HH-MI') mydate 
     FROM DUAL; 

MYDATE 
---------------- 
01-01-2020 10-13 

SQL> 

당신이 뭘하려는 건지, 오라클의 시스템 날짜가에 대한 참조를 얻을 수 있습니다에 따라 의사 열 SYSDATE :.

SQL> SELECT TO_CHAR(sysdate,'MM/DD/YYYY HH:MI:SS AM') dt1, 
    2   TO_CHAR(sysdate,'DD-MON-YYYY HH24:MI:SS') dt2 
    3 FROM dual; 

DT1     DT2 
---------------------- ----------------------------- 
07/01/2011 03:44:30 PM 01-JUL-2011 15:44:30 

SQL> 

그래서 귀하의 질문에 원형 교차로의 대답은 전적으로 귀하의 입력 날짜 문자열에 어떤 형식에 따라 달라집니다 것입니다 당신은 변환하는 형식 모델과 TO_DATE 기능을 통해 오라클의 최신 유형, 그런 다음 날짜 항목을 TO_CHAR 및 형식 모델을 통해 선택한 표시 형식으로 변환하십시오. 질문에서 언급 한 "ALTER SESSION"명령의 경우 ALTER SESSION 명령에서 NLS_DATE_FORMAT 매개 변수를 지정하여 날짜 변환에 대한 기본 형식 모델을 지정할 수 있습니다.

SQL> SELECT sysdate FROM dual; 

SYSDATE 
--------- 
02-JUL-11 

SQL> ALTER SESSION SET nls_date_format='dd-mon-yyyy hh24:mi:ss'; 

Session altered. 

SQL> SELECT sysdate FROM dual; 

SYSDATE 
-------------------- 
02-jul-2011 10:39:24