当前位置: 首页 > 知识库问答 >
问题:

用于Sql插入的Java日期

黄流觞
2023-03-14

我试图在oracle数据库中插入一个日期,但我一直面临着一个转换问题。

public List<Customer> getCustomerData(Date start, Date end) {
...
String query = "SELECT name FROM customers WHERE trunc(order_timestamp) between trunc(?) and trunc(?)";

DateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
pst.setDate(1, new java.sql.Date(sdf.parse(sdf.format(start)).getTime()));

pst.setDate(2,  new java.sql.Date(sdf.parse(sdf.format(end)).getTime()));

}
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
Date start = sdf.parse("10/10/2014");
Date end = sdf.parse("10/10/2016");
customerDao.getCustomerData(start,end);
Caused by: org.h2.jdbc.JdbcSQLException: Data conversion error converting "2014-10-10"; SQL statement:
select name from customers where trunc(order_timestamp) between trunc(?) and trunc(?)  [22018-160]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:329)
    at org.h2.message.DbException.get(DbException.java:158)
    at org.h2.value.Value.convertTo(Value.java:852)
    at org.h2.engine.FunctionAlias$JavaMethod.getValue(FunctionAlias.java:366)
    at org.h2.expression.JavaFunction.getValue(JavaFunction.java:38)
    at org.h2.expression.Comparison.getValue(Comparison.java:206)
    at org.h2.expression.ConditionAndOr.getValue(ConditionAndOr.java:83)
    at org.h2.expression.ConditionAndOr.getValue(ConditionAndOr.java:90)
    at org.h2.expression.Expression.getBooleanValue(Expression.java:180)
    at org.h2.command.dml.Select.queryFlat(Select.java:514)
    at org.h2.command.dml.Select.queryWithoutCache(Select.java:617)
    at org.h2.command.dml.Query.query(Query.java:298)
    at org.h2.command.dml.Query.query(Query.java:268)
    at org.h2.command.dml.Query.query(Query.java:37)
    at org.h2.command.CommandContainer.query(CommandContainer.java:82)
    at org.h2.command.Command.executeQuery(Command.java:185)
    at org.h2.jdbc.JdbcPreparedStatement.executeQuery(JdbcPreparedStatement.java:96)
    at com.customerDaoImpl.custDao.getParentContextdata(custDao.java:431)
    ... 29 more
Caused by: java.lang.NumberFormatException: For input string: "2014-10-10"
    at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1222)
    at java.lang.Double.parseDouble(Double.java:510)
    at org.h2.value.Value.convertTo(Value.java:831)
    ... 44 more
drop ALIAS if exists TRUNC;
CREATE ALIAS TRUNC as '
import java.text.*;
@CODE
double trunc(double num) throws Exception {
    return Math.floor(num*10) /10;
}
';

共有1个答案

丁曦哲
2023-03-14

堆栈跟踪显示,您根本没有使用Oracle。你用的是H2。而且H2似乎没有任何trunc函数接受日期作为参数。

无论如何,这个函数调用都是没用的,因为您已经传递了一个日期,没有任何时间部分作为参数。如果trunc操作存在,它将什么也不做。

 类似资料:
  • 问题内容: 我得到了一个包含4个字段的表格: id,int(11),自动收到的电子邮件,varchar(32)通过,varchar(32)date_created,日期 我的问题是查询的外观如何?我的意思是我不需要将第一个值插入id,因为它是自动递增的,但是我必须插入所有值。 问题答案: 在SQL中,您可以指定要在语句中设置的列:

  • 问题内容: 我有ASP经典页要在表中插入记录。我正在为5个字段使用表单元素。[ABC]([code],[updatedate],[flag],[Mfdate]。当用户未选择Mdate时,使用日期控件在Mdate中获取用户选择的日期,该查询在我的ASP中形成页面如下 在SQL Server中运行时,它将插入日期,但用户尚未选择任何值。 为什么会这样呢? 为数据类型是。 问题答案: 您尚未将其指定为n

  • 问题内容: 我需要找出一种将带有字段的记录插入数据库的方法,但我陷入了困境。 有谁知道我该怎么做?现在我有类似的东西。 但是,当我运行类似这样的命令时,出现错误:值的字符串表示形式的语法不正确。 这是sql语句的样子: 谢谢 问题答案: 当然,这将使你的代码更好,但是要回答你的问题,你需要告诉的字符串表示形式。在中(你不指定数据库供应商的名称),使用以下函数将字符串日期转换为:

  • 我在Java应用程序中使用JDBC来查询DBMS。该应用程序与Sql Server一起正常工作,但在一次插入过程中,我在DB2中遇到了这个错误: com.ibm.db2.jcc.am.SqlDataException: DB2 SQL Error: SQLCODE=-302, SQLSTATE=22001, SQLERRMC=1, DRIVER=3.63.75 使用<code>ResultSet进

  • 下面是我们用来填充SQL数据库中的表的存储过程。@excDate是从C#批处理作业中发送的参数,该作业从和Excel电子表格中获取值。 如果当前代理的培训处于活动状态,则电子表格的“过期日期”单元格中不会有值。这将导致从C#代码向存储过程发送一个空字符串,然后将其转换为日期时间值1900-01-01。在我需要使用光标将新记录插入表之前,这一切都是正常的。 如果@exDate值是1900-01-01

  • insertDate(int $row, int $column, int $timestamp[, string $dateFormat = 'yyyy-mm-dd hh:mm:ss', resource $formatHandler]) int $row $excel = new \Vtiful\Kernel\Excel($config); ​ $dateFile = $excel->fil