Скорее преобразуйте его в секунды и сохраните как целое число со знаком. Вы не можете выполнять числовые операции непосредственно над строками / VARCHARS, это будет дорого стоить массировать его вперед и обратно в пригодный для использования формат. Тогда почему бы не сохранить его непосредственно в этом формате?
Вот пример того, как преобразовать поле CSV в секунды:
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;
}
}
Вот как вы можете использовать его и, наконец, сохранить в БД:
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