1

我的问题是我不知道如何制作java.sql.Timestamp代表'0000-00-00 00:00:00'日期时间的对象。

我有一个声明如下字段的数据库:

`a_field_name` datetime NOT NULL DEFAULT '0000-00-00 00:00:00'

我想做一个准备好的语句,删除一个日期时间为零的条目。

例子:

String sql = "DELETE from `table` WHERE a_field_name = ?";
PreparedStatement stmt = connection.prepareStatement(sql);
stmt.setTimestamp(1, zeroTimestamp);

zeroTimestamp对象就是问题。:)

4

1 回答 1

5

JDBCTimestamp对象不能表示 MySQL 的特殊全零日期。您可以使用字符串:

String sql = "DELETE from `table` WHERE a_field_name = ?";
PreparedStatement stmt = connection.prepareStatement(sql);
stmt.setString(1, "0000-00-00 00:00:00");

noDatetimeStringSync=true如果要恢复这些值,还必须添加连接属性;否则驱动程序在从数据库中获取值时会抛出异常。

请参阅此处“日期时间”部分中的完整详细信息:
https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-installing-upgrading-3-0-to-3-1。 html

于 2013-08-10T21:16:12.617 回答