0

我有一个视图,我将 DATETIME 转换为 DATE,所以我可以忽略时间部分。

CAST(av.date as DATE),

我尝试使用代码在特定日期查询此视图:

s.date BETWEEN :start AND :end

要设置这些参数,我会收到日期并截断它,使用以下代码:

DateTime beginDate = new DateTime(bgn);
DateTime endDate = new DateTime(end);
Date startDt = DateUtils.truncate(beginDate.toDate(), Calendar.DATE);
Date endDt = DateUtils.truncate(endDate.toDate(), Calendar.DATE);

问题是当它到达 JDBC 时,我收到以下错误:

WARN [JDBCExceptionReporter] SQL 错误:241,SQLState:22007
错误 [JDBCExceptionReporter] 从字符串转换日期和/或时间时转换失败。

使用以下代码将日期设置为查询:

Query query = entityManager.createNamedQuery(name);
query.setParameter("start", startDt);

有人对可能发生的事情有任何线索吗?我找到了这个关于这个错误的链接,但它根本没有帮助我。我对此感到100%迷失了。

4

1 回答 1

0

我不知道您将日期传递给查询的方式,但您可以将日期转换为字符串,然后将其传递给查询:

DateTime beginDate = new DateTime(bgn);
DateTime endDate = new DateTime(end);
DateFormat df = new SimpleDateFormat("yyyyMMdd");
String startDt = df.format(DateUtils.truncate(beginDate.toDate(), Calendar.DATE));
String endDt = df.format(DateUtils.truncate(endDate.toDate(), Calendar.DATE));

在不知道您的确切代码的情况下,这有点猜测。

于 2013-06-18T19:28:05.533 回答