在完成编码之前,我想知道使用java在数据库中插入日期和时间戳的最佳方法是什么。
数据库可以是oracle,mssql,db2或mysql。
我想以某种方式插入日期和时间戳,以便检索记录时可以轻松检索。假设我们的数据库管理员可能希望在2015年8月到2015年10月之间以及某个时间范围内提取记录。
选项1:为每种数据库类型使用不同的sql查询脚本
示例:
INSERT INTO YOUR_TABLE (YOUR_DATE_COLUMN, COLUMN_2, COLUMN_3)
VALUES (SYSDATE, 1234, 567);
选项2:使用java语法如下
示例:
java.util.Date date = new java.util.Date();
long t = date.getTime();
java.sql.Date sqlDate = new java.sql.Date(t);
java.sql.Time sqlTime = new java.sql.Time(t);
java.sql.Timestamp sqlTimestamp = new java.sql.Timestamp(t);
pstmt.setDate(2, sqlDate);
pstmt.setTime(3, sqlTime);
pstmt.setTimestamp(4, sqlTimestamp);
pstmt.executeUpdate();
选项2是否会在不同的数据库类型中正确插入日期和时间戳?
答案 0 :(得分:2)
选项2是否会在不同的数据库类型中正确插入日期和时间戳?
假设您使用了与基础列类型匹配的正确Java类型,是的,这就是想法。
请注意,在您给出的示例中,您设置了第2,3,4列,但不是1.您显然也需要设置第1列,它们应该与SQL字符串中的列匹配(您没有包含),有?适当列的值的占位符。
在任何情况下,请查看要使用的数据库的jdbc驱动程序的文档,查看有关Java类型到SQL类型的映射的实现说明,以及任何可能的文档记录。
答案 1 :(得分:1)
绝对选项2将正确处理插入。至少比选项1更好:-)当然,您应该在数据库中创建具有适当数据类型的列。
你应该注意的事情是: