使用java将字符串插入日期时间mysql列。

时间:2012-06-07 18:17:27

标签: java mysql datetime insert calendar

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

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

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

我想将此字符串插入到我的日期时间字段中(其格式与上面的示例相同“带有插入查询。

如果这不是解决问题的正确方法,我应该使用什么方法?在查看MySQL文档后,我得到的印象是,只要格式正确,我就可以这样做。使用Java的Calendar和Date类似乎只会给我带来麻烦。

4 个答案:

答案 0 :(得分: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();

这将使您的代码可移植,而不是绑定到任何区域设置或数据库。

答案 1 :(得分:1)

正如the manual中所讨论的,这种日期时间文字有许多有效的格式,包括你提出的格式。

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

答案 2 :(得分:0)

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

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

SELECT 'mydate' + INTERVAL 0 DAY

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

答案 3 :(得分:0)

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

然后我可以简单地使用像

这样的语句
stat.setString(10, TimeUtil.formatTime(message.submitTime));