使用java

时间:2015-10-09 06:10:29

标签: java database

在完成编码之前,我想知道使用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是否会在不同的数据库类型中正确插入日期和时间戳?

2 个答案:

答案 0 :(得分:2)

  

选项2是否会在不同的数据库类型中正确插入日期和时间戳?

假设您使用了与基础列类型匹配的正确Java类型,是的,这就是想法。

请注意,在您给出的示例中,您设置了第2,3,4列,但不是1.您显然也需要设置第1列,它们应该与SQL字符串中的列匹配(您没有包含),有?适当列的值的占位符。

在任何情况下,请查看要使用的数据库的jdbc驱动程序的文档,查看有关Java类型到SQL类型的映射的实现说明,以及任何可能的文档记录。

答案 1 :(得分:1)

绝对选项2将正确处理插入。至少比选项1更好:-)当然,您应该在数据库中创建具有适当数据类型的列。

你应该注意的事情是:

  1. 数据库中的数据类型;
  2. 根据1)截断数据;
  3. 时区(将使用JVM的默认时区),因此如果您需要转换,则必须关注此问题。例如。 @see setDate(int, Date, Calendar)