使用java将日期和时间戳插入数据库的最佳方法
在完成编码之前,我想知道使用java在数据库中插入日期和时间戳的最佳方法是什么 数据库可以是oracle、mssql、db2或mysql 我想以某种方式插入日期和时间戳,以便检索时能够轻松地核对记录。假设我们的数据库管理员可能希望在2015年8月到2015年10月之间以及某些时间范围内提取记录 选项1:为每种数据库类型使用不同的sql查询脚本 示例:使用java将日期和时间戳插入数据库的最佳方法,java,database,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 (SY
INSERT INTO YOUR_TABLE (YOUR_DATE_COLUMN, COLUMN_2, COLUMN_3)
VALUES (SYSDATE, 1234, 567);
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:使用java语法,如下所示
示例:
INSERT INTO YOUR_TABLE (YOUR_DATE_COLUMN, COLUMN_2, COLUMN_3)
VALUES (SYSDATE, 1234, 567);
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能否在不同的数据库类型中正确插入日期和时间戳
假设您使用了与基础列类型匹配的正确Java类型,是的,这就是想法
请注意,在您给出的示例中,设置了列2、3、4,但没有设置列1。显然,您也需要设置第1列,并且它们应该与SQL字符串中的列(您没有包括)匹配,使用?相应列的值的占位符
在任何情况下,请检查您要使用的数据库的jdbc驱动程序文档,查看有关Java类型到SQL类型的映射的实现说明,以及任何潜在的文档化陷阱。选项2肯定会正确处理插入操作。至少优于选项1:-)当然,您应该在数据库中创建具有适当数据类型的列 你应该注意的是:
我认为,如果希望在单个字段/列中使用日期/时间值,那么
java.sql.Timestamp
将是首选方法,因为其他两种方法将根据各自的需要截断日期基。当然,这假设数据库支持SQL时间戳type@MadProgrammer单列或单独列,我想插入的日期和时间是db不可知的。如果我没记错的话,oracle和db2支持日期类型,但不确定时间戳。那个么我是单独插入日期和时间还是在一列中插入呢?选项2——这只是我从网站上复制的一个例子。是的,我注意到了。请原谅我的麻烦。我是使用单独的列来表示日期和时间,还是使用单个列,因为不同的数据库支持不同的日期和时间。例如,oracle date columnn还支持时间如果希望数据单位为日期+时间,则应使用时间戳,并让驱动程序将其映射到正确的类。如果您的数据单位是日期+时间,那么将日期和时间分隔到不同的列会很麻烦,而且不自然。如果这不是您的单位,并且您需要独立的值,那么请务必将它们分开。我对日期和时间使用单独的列还是使用单独的列,因为不同的数据库对日期和时间的支持不同。比如说,oracle date columnn还支持时间,至少对于oracle和mysql,您可以使用单个列。