gpt4 book ai didi

java - 如何在 java 中将 varchar 转换为时间?

转载 作者:行者123 更新时间:2023-11-29 01:33:49 29 4
gpt4 key购买 nike

我正在使用 java 将数据从 csv 文件复制到我的数据库 (mysql)。我有一个时间列,其中的值可以是 h:mm:ss- h:mm:ss (- 意味着我们超越了一定的时间延迟)。

所以我不得不将列类型更改为 varchar

我现在的问题是我需要比较该列中记录的值,例如我需要显示该列值小于 30 分钟的所有记录,知道该字段值超过 24 小时格式(可以是56:00:00)。

谢谢你的帮助

最佳答案

而是将其转换为秒并将其存储为带符号的整数。您不能直接对字符串/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

关于java - 如何在 java 中将 varchar 转换为时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3447870/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com