convertissent plutôt à quelques secondes et le stocker sous forme d'un entier signé. Vous ne pouvez pas faire des opérations numériques directement sur des chaînes/varchars, il en coûterait très cher de le masser et de revenir au format utilisable. Alors pourquoi ne pas simplement le stocker directement dans ce format?
Voici un exemple de coup d'envoi comment convertir votre champ CSV à quelques secondes:
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;
}
}
Voilà comment vous pouvez l'utiliser et enfin stocker dans DB:
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);
Pour sélectionner les périodes de plus de 30 secondes, juste faire comme:
SELECT col1, col2 FROM tbl WHERE col1 > 30
J'ai déjà essayé mais ça n'a pas fonctionné – daria
Qu'est-ce que tu as exactement y? – Mchl
J'ai déjà omis le '[' et défini le type de données comme le temps, mais cela n'a pas fonctionné. J'ai oublié de vous dire que la valeur de temps n'est pas limitée à 0-23.Je peux avoir 56:00:00 valeur indiquant qu'il est de 7 jours ouvrables. – daria