2012-10-16 2 views
2

에 어떻게 설정합니까? dateTime mysql 열에 java.sql.PreparedStatement#setDate을 입력하면 시간 정보가없는 2012-10-16 00:00:00과 같은 날짜 형식이됩니다. PreparedStatement는 Time 정보가없는 java.util.Date 및 java.sql.Date를 MySQL dateTime 열

protected Date getIncrementedDateTime() { 
    additionalTime += 1000; 
    return new Date(System.currentTimeMillis() + additionalTime); 
} 


preparedStatement.setDate(j, new java.sql.Date(getIncrementedDateTime().getTime()); 

내가 값을 디버깅하지만, MySQL 데이터베이스는 항상 2012년 10월 16일 0시 0분 0초 값이 :이 같은 루프에서 날짜를 저장하고있다. java.sql.Date에 대한 설명서 당으로

답변

3

:

JDBC는 SQL 날짜 값으로 식별 할 수있는 밀리 초 값의 thin 래퍼. [...]

SQL DATE의 정의에 따라 java.sql.Date 인스턴스로 랩핑 된 밀리 초 값은시, 분, 초 및 밀리 초를 0으로 설정하여 '정규화'해야합니다. 인스턴스가 연관된 특정 시간대.

기본적으로 datetime 열의 경우 다른 유형 (예 : Timestamp. (다른 방법으로는 이상적이지는 않지만 더 적합 할 것입니다 ...)

+0

타임 스탬프가 'dateTime'열 유형과 맞지 않습니다. 잘못된 datetime 값 : '16 : 16 : 51 'for column ...'timeStamp '열 유형과 Timestamp 데이터 형식을 사용해야합니까? – lisak

+0

@Sloin : 'Timestamp'가 datetime 열과 함께 실제로 작동합니다. 이것은 기본적으로 JDBC에서 빠졌지 만,'Timestamp'는 아마도 당신이 얻을 수있는만큼 가깝습니다. –

+0

맞아, java.sql.Timestamp 및 ps.setTimestamp (j, (Timestamp) value); 'dateTime'열 형식으로 작동합니다. – lisak

0

java.sql.Date는 날짜가 없습니다. 시간 정보가 포함 된 java.util.Date와 혼동하지 마십시오. java.sql.Timestamp를보고 싶을 수도 있습니다.

0

테이블 열의 데이터 형식을 기반으로합니다. 데이터베이스 서버에 따라 TimeStamp 또는 Time을 사용해보십시오.