【问题标题】:SQL Error: 241, SQLState: 22007SQL 错误:241,SQL 状态:22007
【发布时间】:2013-06-18 18:59:35
【问题描述】:

我有一个视图,我将 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);

有人对可能发生的事情有任何线索吗? 我发现这个 link 关于这个错误,但它对我一点帮助都没有。 我对此感到 100% 迷失了。

【问题讨论】:

  • 请更新您的标题以直接反映您的问题。大多数人根本不知道这样的错误代码。
  • 请显示代码如何将日期传递给查询。
  • @AlexanderRumanovsk 您可以编辑您的问题并将其添加到那里。

标签: sql hibernate date datetime time


【解决方案1】:

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

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));

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

【讨论】:

    猜你喜欢
    • 2014-09-07
    • 2014-03-22
    • 2013-06-23
    • 2017-10-25
    • 2020-01-22
    • 1970-01-01
    • 2013-04-23
    • 1970-01-01
    • 2013-02-13
    相关资源
    最近更新 更多