【问题标题】:How to insert custom date time in oracle using java?如何使用 java 在 oracle 中插入自定义日期时间?
【发布时间】:2012-10-26 04:38:27
【问题描述】:

嗨,我有一列(输入日期)。我想插入自定义日期和时间而不使用 Preparedstatement。我已经使用过

String date = sf.format(Calendar.getInstance().getTime());
String query = "Insert into entryTbl(name, joinedDate, ..etc)  values ("abc", to_date(date, 'yyyy/mm/dd HH:mm:ss'))";
statement.executeUpdate(query);

但我得到 literal does not match 错误。所以甚至尝试使用“SYSDATE”。它只插入日期而不是时间。那么如何使用java将日期时间插入oracle?请任何人帮助..

【问题讨论】:

  • 有什么不使用 PreparedStatement 的具体原因吗?

标签: java oracle date


【解决方案1】:

强烈建议使用PreparedStatement 来应对潜在的 SQL 注入攻击,而不是构建原始 SQL 查询来与数据库交互。

也就是说,您也可以将日期列的值指定为yyyy-MM-dd HH:mm:ss 格式的字符串:

SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String date = sf.format(Calendar.getInstance().getTime());
String query = "INSERT INTO entryTbl(name, joinedDate, ..etc.,)  values ('abc', '" 
    + date + "', ...etc.,)";
statement.executeUpdate(query);

【讨论】:

  • 因为我的表中有很多列。我们不知道很多字段是否我们放置了 setInt() ,setString() 和 where 字段也使用 PreparedStatement。所以我们直接使用查询来执行 tat命令...和上面的查询也无法插入你提到的...还有其他方法吗?
【解决方案2】:

我认为yyyy/mm/dd HH:mm:ss 应该更新为:YYYY/MM/DD HH:MI:SS TZH:TZM 并使用to_timestamp--documentation here

 String query = "INSERT INTO entryTbl(name, joinedDate, ..etc.,) "+
           "values ('abc', "+
           "TO_TIMESTAMP('"+dateString+"', 'YYYY/MM/DD HH:MI:SS TZH:TZM'), etc.,)";

【讨论】:

  • @shrr: 请分享dataString?使用上述语法后也分享新的错误。
猜你喜欢
  • 2015-09-05
  • 2017-04-21
  • 1970-01-01
  • 2021-03-13
  • 1970-01-01
  • 2019-11-02
  • 2013-08-08
  • 2021-10-01
  • 1970-01-01
相关资源
最近更新 更多