2010-08-10 8 views
2

java로 데이터를 csv 파일에서 내 데이터베이스 (mysql)로 복사 중입니다. 값이 h:mm:ss 또는 - h:mm:ss 일 수있는 시간 열이 있습니다 (-은 특정 시간 지연을 초과했음을 의미합니다).varchar를 java로 변환하는 방법은 무엇입니까?

그래서 열 유형을 varchar으로 변경해야했습니다.

내 문제는 이제이 열의 레코드 값을 비교해야합니다. 예를 들어이 열의 값이 30 분 미만인 모든 레코드를 표시해야하며 필드 값이 24 시간 형식을 초과한다는 것을 알고 있어야합니다. be 56:00:00). 당신의 도움이

답변

0

에 대한

덕분에 나는 전문가 자바 dev에 아니지만, 난 그렇게 사용하여 묻는이 (내가 제대로 이해하는 경우), strtotime으로 달성 할 수있는 PHP를 알고있는가 검색으로, I 이 스레드를 찾았습니다.

PHP's strtotime() in Java

희망이 도움이됩니다.

1

드롭에서 []와 TIME 유형 필드로 이동하고 당신은 괜찮을 것

UPDATE tableName SET timeField = REPLACE(REPLACE(varCharField,'[',''),']','')

+0

이미 시도했지만 작동하지 않았습니다. – daria

+0

정확히 무슨 일을하셨습니까? 와이? – Mchl

+0

나는 이미 '['를 생략하고 데이터 유형을 시간으로 설정했지만 작동하지 않습니다. 나는 시간 값이 0-23으로 제한되지 않는다는 것을 말하는 것을 잊었다.나는 그것이 일하는 7 일을 나타내는 56:00:00 값을 가질 수 있습니다. – daria

1

이완

이 문제는 하나 시간 데이터를 하나의 열에과 설정을 해결할 수 있습니다

부울 플래그 같은 레코드의 다른 열에는 '-'와 '-'이외의 레코드가 다르다. 이것은 일반적인 해결책 인 빼기 기호이다. mysql 여기서  을 사용하는 경우 열에 음수 값 (시간 데이터 유형)을 나타내는 '-'기호로 직접 데이터를 설정할 수 있으며 30 분 (00 : 30:00) 등등을 사용할 수 있습니다. subtime() 또는 addtime() 비교를 위해 mysql 구문을 사용할 수 있습니다. 희망이 답변을 찾으십시오.

관련

la_89ondevg

3

이 오히려 초로 변환 부호있는 정수로 저장합니다. 문자열/varchar에 직접 수치 연산을 수행 할 수는 없지만이를 사용 가능한 형식으로 다시 마사지하는 비용이 많이 든다. 그런 다음 바로 그 형식으로 직접 저장하지 않는 이유는 무엇입니까? 여기

public static int toSeconds(String time) throws ParseException { 
    SimpleDateFormat positiveTime = new SimpleDateFormat("'['hh:mm:ss']'"); 
    SimpleDateFormat negativeTime = new SimpleDateFormat("'[-'hh:mm:ss']'"); 

    if (time.startsWith("[-")) { 
     return -1 * (int) negativeTime.parse(time).getTime()/1000; 
    } else { 
     return (int) positiveTime.parse(time).getTime()/1000; 
    } 
} 

당신이 DB에 저장 마침내 그것을 사용하는 방법은 다음과 같습니다 : 여기

초에 CSV 필드를 변환하는 방법을 킥오프 예입니다

String time1 = "[00:00:30]"; 
String time2 = "[- 00:10:20]"; 

int time1InSeconds = toSeconds(time1); 
int time2InSeconds = toSeconds(time2); 

// ... 

preparedStatement = connection.prepareStatement("INSERT INTO tbl (col1, col2) VALUES (?, ?)"); 
preparedStatement.setInt(1, time1InSeconds); 
preparedStatement.setInt(2, time2InSeconds); 

는 30의 시간을 선택하려면 몇 초만 기다려주세요.

SELECT col1, col2 FROM tbl WHERE col1 > 30 
관련 문제