mysql - 我正在尝试获取最近 "N"个月的订单。在下面的查询中,我需要动态设置月份的值

标签 mysql spring hsqldb dao spring-jdbc

我在设置月份值时遇到 java 异常:

SELECT * 
  FROM {Order} 
 WHERE creationtime >= NOW() 
   AND creationtime <= DATE_SUB(NOW(),  INTERVAL ?months MONTH)

但是这个查询在 mysql 中可以正常工作。

期望轨迹:

错误 [hybrisHTTP34] [FlexibleSearch] 发生灵活搜索错误... 2017 年 5 月 8 日 1:53:18 PM org.apache.catalina.core.StandardWrapperValve 调用 严重:路径 [/jafrastorefront] 上下文中 servlet [DispatcherServlet] 的 Servlet.service() 抛出异常 [请求处理失败;嵌套异常是 de.hybris.platform.servicelayer.search.exceptions.FlexibleSearchException:SQL 搜索错误 - 启用属性“flexible.search.exception.show.query.details”以获取更多详细信息]及其根本原因 org.hsqldb.HsqlException:意外标记:?

最佳答案

不确定java异常,但逻辑上,你的代码有这个问题。

如果NOW()5th May , DATE_SUB(NOW(),INTERVAL 1 MONTH)将是5th April ,所以您正在选择记录 > 5th May< 5th April同时。因此你不会得到任何结果。

在之间使用以避免混淆,请使用 BETWEEN .

SELECT * FROM {Order} 
WHERE creationtime BETWEEN
   DATE_SUB(NOW(),  INTERVAL 1 MONTH )
AND   
   NOW()

关于mysql - 我正在尝试获取最近 "N"个月的订单。在下面的查询中,我需要动态设置月份的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43841176/

相关文章:

java - 登录java应用程序

java - 在子 bean 上设置值

java - 带有远程数据库的 Spring。如何最小化网络延迟开销?

java - HSQL - 识别打开连接的数量

java - 在 Spring Batch 中重置内存数据库

spring - JSON Web Token (JWT) 和基于 Spring 的 SockJS/STOMP Web Socket

mysql - 执行数据库查询时出错

php - 是否可以在准备好的语句中使用 SELECT * ?

php - 插入值列表与列列表不匹配 : 1136 Column count doesn't match value count

php - 在搜索引擎中找到/图像索引的结果