【问题标题】:Getting SQL syntax error for criteria ADDDATE function获取条件 ADDDATE 函数的 SQL 语法错误
【发布时间】:2021-09-23 13:52:27
【问题描述】:

我正在尝试在现有的 Date 表达式中添加一个日期。如果我这样做,我会收到 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“programsub0_.subscribed_date)”附近使用正确的语法

我的代码:

Expression<Date> expiryDate = criteriaBuilder.function("ADDDATE", Date.class,
                criteriaBuilder.literal("DAY"),
                programSubscriptionRoot.get("subscriptionPlan").get("duration"),
                programSubscriptionRoot.get("subscribedDate"));

在上面的代码示例中,programSubscriptionRoot.get("subscriptionPlan").get("duration") 将给出 Long.class 和 programSubscriptionRoot.get(" subscribedDate")) 会给出一个 Date.class。

我还使用了“DATE_ADD”、“DATEADD”而不是“ADDDATE”。但它不起作用。

请帮助我在上面的查询中添加订阅日的天数。谢谢。

【问题讨论】:

  • ADDDATE 的语法是 ADDDATE(date, INTERVAL value addunit)。你确定你是在代码中这样做的吗?
  • 嗨@aksappy,感谢您的回复...我已经参考了SQL documentation的方法,其语法与您所说的相同。但是在这种情况下如何实现呢?你能给我这个语法的代码sn-p吗?

标签: java mysql criteria specifications


【解决方案1】:

好的,我找到了解决方案;我已经从我的代码中删除了间隔,它可以工作。

Expression&lt;Date&gt; expiryDate = criteriaBuilder.function("ADDDATE", Date.class, programSubscriptionRoot.get("subscribedDate"),programSubscriptionRoot.get("subscriptionPlan").get("duration"));

link_to_mysql_doc...

感谢您的关心,@aksappy。问候..

【讨论】:

    猜你喜欢
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-13
    相关资源
    最近更新 更多