我得到一个SqlException
在PreparedStatement
一个表上(重复键)违反唯一性约束。本质上,我的表如下所示:
mytable
=======
mytable_id PRIMARY KEY INT NOT NULL
fizz_id INT NOT NULL
buzz_timestamp DATETIME
唯一性约束在上buzz_timestamp
;也就是说,没有2条记录可以具有相同的日期/时间“时间戳”。
在PreparedStatement
将记录插入该表如下所示:
PreparedStatement ps = conn.prepareStatement(insertQuery);
ps.setDate(1, new java.sql.Date(new java.util.Date().getTime()));
因此,您可以看到我正在使用java.util.Date()
(“现在”)并将其转换为java.sql.Date
实例。
我看到的确切错误(重复键)一直抱怨我试图将其插入2015-05-27 00:00:00.0000000
表中buzz_timestamp
,但该错误已经存在。因此,很明显,我使用了错误的Date
API,并且插入了具有无效时间成分的日期,从而产生了重复键异常。
所以我问: 如何纠正这个问题,以便真正为“现在”插入日期和时间?
用
ps.setTimestamp(new java.sql.Timestamp(System.currentTimeMillis());
请参见:在PreparedStatement中使用setDate
我在违反表的唯一性约束(dupe键)时得到。基本上,我的表如下所示: 所以我问:我如何纠正这一点,以便我真正插入“现在”的日期和时间?
问题内容: :什么时候使用,为什么? 问题答案: 恭喜,你已经使用JDBC达到了我最喜欢的功能:Date类处理。 基本上,数据库通常至少支持三种形式的日期时间字段,即日期,时间和时间戳。它们每个在JDBC中都有一个对应的类,并且每个都进行了扩展。这三个中的每个的快速语义如下: 对应于SQL DATE,这表示它存储年,月和日,而时,分,秒和毫秒被忽略。此外,sql.Date它与时区无关。 对应于SQ
问题内容: 我想转换为,但是我也想要小时,分钟和秒,但是java.sql.Date只能用于存储date(没有时间)。我尝试了下面的代码,但它只给出对象的年,月和日。 电流输出: 所需的输出: 问题答案: 该类型仅用于存储日期(无时间)信息,因为它映射到不存储时间的SQL 类型。其方法的作用是: 以日期转义格式yyyy-mm-dd格式化日期。 要获得所需的输出,可以使用,它存储日期 和 时间信息,并
问题内容: 这是我的问题:我有一个用户输入日期,例如:2012-12-24(字符串)我将一个时间连接到该字符串,然后转换为java.util.Date我的代码如下: 我的问题是,当我使用该util.Date并将其设置为sql.Date时: 它不会给我分配的时间戳,只会以yyyy-MM-dd格式返回日期(例如2012-12-23)。 为什么!?我好沮丧 注意:我注意到当我使用断点时,我能够展开sql
问题内容: 我在函数上发现错误,从DatatypeFactory df初始化newInstance()方法后,它显示错误结果,我得到了另一个错误: 我只是将包裹名称从 然后投射: 问题答案: 这是不可能的 投 自到。您需要从一种类型 转换 为另一种类型:
问题内容: 在保留时间戳的同时将java.sql.Date对象转换为java.util.Date的最简单方法是什么? 我试过了: 没有运气。它仍然只将日期部分存储到变量中。 问题答案: java.sql.Date类设计为仅包含日期而没有时间,因此您看到的转换结果对该类型是正确的。您需要使用java.sql.Timestamp来获取带时间的完整日期。