2017-02-12 9 views
2

PHP에서 date('Y-m-d H:i:s')'2017-02-17 23:10:00'과 같은 결과를 제공합니다.오라클의 날짜를 Y-m-d로 저장하는 방법 H : i : s 형식?

이제 결과를 ORACLE 10g에 저장하고 싶습니다. 나는 오라클 10g 익스프레스 버전을 사용하고 있습니다.

이제이 데이터를 저장하려고합니다.

$time = date('Y-m-d H:i:s');

날짜 값은 12-Feb-17로 저장지고

$sql = "INSERT INTO tbl_language VALUES 
(1, 'Hindi', TO_DATE('".$time."','yyyy-mm-dd hh24:mi:ss'))"; 

. 원하는 양식에 저장된 날짜 데이터를 얻으려면 어떻게해야합니까?

+0

$ time에는 '2017-02-17 23:10:00'문자열이 있지만 12-27 일로 Oracle에 저장됩니까? 이것은 오타입니까? 아니면 정말로 다른 날입니까? –

+0

@ThorstenKettner. . . 필자는 12 월 2 일 17 일이 오라클이 날짜를 표시하는 기본 방법 일 뿐이라고 생각합니다. –

+1

@Gordon .. 아니요. 세션의 NLS 설정에 기반한다고 생각합니다. – GurV

답변

0

날짜 열을 선택하기 만하면 Oracle은 시간 구성 요소를 표시하지 않습니다.

이 시도 : 오라클의

select l.*, 
     to_char(datecol, 'YYYY-MM-DD HH24:MI:SS') 
from tbl_languages l; 
+0

그게 무슨 뜻입니까? * 날짜를 선택하면 Oracle은 시간 구성 요소 *를 표시하지 않습니다. 그건 세션의'NLS_DATE_FORMAT'에 달렸지? – mathguy

3

날짜 2017년 2월 17일 23시 10분 0초 12 2 월-17 또는 다른 어떤 형식으로 당신이 생각하는대로 저장되지 않습니다. 완전히 다른 방식으로 저장됩니다. 데이터베이스에서 날짜를 선택하면 날짜가 표시되는 형식은 세션의 NLS_DATE_FORMAT 설정을 기반으로합니다. 특정 형식으로 날짜를 얻고 싶다면

, 당신은 필요한 형식으로 TO_CHAR 기능을 사용할 수 있습니다 다음 DATE 데이터 유형이 형식이없는

select to_char(datecolumn, 'yyyy-mm-dd hh24:mi:ss') from your_table; 
+0

OP가 "yyyy-mm-dd"(특히 'Mon'보다는 오히려 순서)를 원했던 것처럼 보입니다. 그렇지 않으면 이것이 올바른 대답입니다. – mathguy

0

; 오라클은 이것을 7- or 8-bytes으로 저장하고 클라이언트 프로그램 (예 : SQL/Plus, SQL Developer, Toad, Java, Python 등)에 전달 될 때가 지 클라이언트 프로그램은 날짜가있는 규칙에 따라 형식을 지정합니다 형식을 얻습니다.

SQL/Plus 또는 SQL Developer를 사용하는 경우 NLS_DATE_FORMAT 세션 매개 변수를 사용하여 날짜 형식을 지정합니다. You can change this 사용 :

ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';

(이것은 현재 세션의 형식을 변경하고 다른 세션/사용자 변경되지 않습니다주의하십시오.)

당신이 부여하려면 특정 형식의 날짜는 convert it to a string이어야합니다.

SELECT TO_CHAR(date_column, 'YYYY-MM-DD HH24:MI:SS') AS formatted_date 
FROM tbl_language; 
+0

흥미 롭습니다. Java/Python이 맞습니까? 필자는 항상 어떤 종류의 'date' 데이터 유형을 가지고 있다고 가정하고 (오라클 중 하나를 모르지만) 오라클은 문자열 데이터 유형에서 요청하지 않는 한 문자열을 전달하지 않습니다. 이는 문자열 만 이해하는 SQL \ * Plus 및 Toad와는 다릅니다. 그냥 궁금해 할 것입니다. (내 이해는 100 % 잘못 될 수 있습니다.) – mathguy

+0

Java에서 Oracle JDBC 드라이버는 Oracle 날짜를 ['oracle.sql.DATE'] (https://docs.oracle.com/ database/121/JAJDB/oracle/sql/DATE.html) 클래스 - 이것은 오라클이 내부적으로 데이터베이스에 사용하는 바이너리 형식을 나타내는 클래스입니다. 사용자에게 표시하고 싶으면 바이트를 표시하지 않고, 사용자가 이해할 수있는 방식으로 날짜를 형식화하기 위해'toString' 메소드 (또는 사용자가 호출 한 다른 유사한 메소드)를 사용합니다. SQL * Plus와 Toad는 동일합니다. - 오라클은 7 바이트를 전달하고 사용자가 이해할 수 있도록 다른 형식을 지정합니다. – MT0