0

MySQL 是否允许我将格式正确的字符串插入 MySQL 数据库中的数据时间字段?

我正在解析一个文件,结合 yyyyMMdd 格式的日期和 HHmmss 格式的时间,并计划将它们格式化为如下字符串:

     "yyyy-MM-dd HH:mm:ss"

然后我想使用插入查询将此字符串插入到我的日期时间字段(其格式与上面的示例相同)。

如果这不是处理我的问题的正确方法,我应该使用什么方法?在查看 MySQL 文档后,我觉得只要格式正确,我就可以做到这一点。使用 Java 的 Calendar 和 Date 类似乎只会让我头疼。

4

4 回答 4

2

这不是这样做的正确方法。正确的方法是使用 java.sql.Timestamp,并使用准备好的语句插入您的日期:

Date date = dateFormat.parse(s);
Timestamp timestamp = new Timestamp(date.getTime());
String sql = "insert into my_table (id, instant) values(?, ?)";
PreparedStatement stmt = connection.prepareStatement(sql);
stmt.setLong(1, id);
stmt.setTimestamp(2, timestamp);
stmt.executeUpdate();

这将使您的代码可移植,而不是绑定到任何语言环境或数据库。

于 2012-06-07T18:23:45.497 回答
1

手册中所述,此类日期时间文字有多种有效格式,包括您建议的格式。

所以是的,这将完全按照您的描述工作。但是请注意,您不需要添加额外的格式,因为您可以直接插入YYYYMMDDHHMMSS- 它甚至不需要作为字符串引用。

于 2012-06-07T18:20:42.290 回答
0

是的,那会奏效。MySQL 使用该格式yyyy-MM-dd HH:mm:ss作为其默认格式,但如前所述,您可以使用许多其他格式。

如果您想检查有效日期,请尝试对日期执行幂等操作。

SELECT 'mydate' + INTERVAL 0 DAY

如果 MySQL 向您返回相同的内容,则日期有效,否则 MySQL 将返回 NULL。

于 2012-06-07T18:23:54.957 回答
0

如果格式正确,您可以使用字符串。我在我的代码中执行此操作,并有一个 TimeUtil 类将 long 转换为 DB 的规定格式。

然后我可以简单地使用如下语句

stat.setString(10, TimeUtil.formatTime(message.submitTime));
于 2012-06-07T18:25:20.243 回答