코드 짜는 티모

[SQL]update datetype from java 본문

IT/DB

[SQL]update datetype from java

나무뒤에티모 2019. 6. 28. 19:17
반응형

< [SQL]update datetype from java >

 

자바 로직단에서 JDBC붙이고 executequery든 executeupdate를 사용해서

DB의 row를 DML하는 경우가 있을 것이다.

 

자바에서

String sql = "update emp set update_date = sysdate where name = '티모'";

이 쿼리를 실행하려고 한다.

 

emp테이블에서 티모라는 name을 가진 로우의 update_time의 값을 현재날자(sysdate)로 바꾸는 쿼리이다.

 

쿼리에는 문제가 없어보이며 execute해도 emp테이블의 조건에 맞는 row는 update가 쳐질것이다.

 

여기서 내가 겪은 너무 간단하지만 이유를 몰랐던 바보같았던 실수가 있다.

udpate를 쳤는데 db의 날짜가 시분초가 빠져서 나오는 것이다

YY/MM/DD HH24:MI:SS FORMAT으로 나와야하는데 YY/MM/DD 만 나온다.

자바에서 주는 SYSDATE를 인식 못하는 걸까?

왜 연월일만 나올까?

자바에서 어차피 JDBC연결해서 그안에서 쿼리가 도는건데 왜 SYSDATE를 못하는걸까?

하면서 SYSDATE대신 자바 라이브러리를 이요해서 TIMESTAMP로 시간을 구한뒤 TO_CHAR, TO_DATE를 이용해서 형식이 맞춰서 넣어주기도 했지만 여전히 연월일, YY/MM/DD로 나오는 것이다.

 

자바에서는 문제가 없다.

그러면 DB버전이나 그런 문제가 있을까 했지만 물론 아무 상관이없다...

 

이 때 갑자기 생각난건 emp테이블의 update_time은 무슨 타입일까?

보통 금액을 넣거나 숫자를 넣을때도 NUMBER로 안하고 VARCHAR로 하는 경우가 있다..

사실 내가 그렇게 한다 그냥 다 VARCHAR로한다 사실 아무생각없이..

마찬가지로 create table할때 update_time을 varchar(20) 또는 date로 할 수 있다.

 

난 여기서 UPDATE_TIME의 TYPE을 VARCHAR로 줬었다..

TYPE을 다시 DATE로 바꾸니..SYSDATE로 해도 현날짜로 FORMAT도 맞춰서 잘들어간다..

정말 바보같은 실수로 몇분을 날렸는지 모른다 ㅠㅠ

 

TYPE을 잘보자.. 자바든 DB든..

 

 

 

반응형
Comments