【发布时间】:2017-10-10 21:12:57
【问题描述】:
您可能已经意识到,我经常使用这个 IBM Bluemix DataConnect 服务。创建活动时,您可以使用自定义过滤器优化要导出的数据(它启用 WHERE 子句以向查询添加逻辑)
我正在尝试过滤 TIMESTAMP 字段,尝试获取 1 个月前的数据,但该语句不起作用。
DATE(SHIPMENT_TMS) >= CURRENT DATE - 2 MONTH - (DAY(CURRENT DATE)-1)DAYS
我收到以下错误消息
自定义过滤器失败。重试刚刚执行的整形操作。 • 使用 SQL WHERE 子句表达式过滤行 'DATE(SHIPMENT_TMS) >= 当前日期 - 2 个月 - (DAY(CURRENT DATE)-1)DAYS' java.lang.RuntimeException: [1.36] failure: end of input 预计 DATE(SHIPMENT_TMS) >= 当前日期 - 2 个月 - (DAY(CURRENT 日期)-1)天
可能是服务无法识别 DATE() 或 DAY()。有没有人尝试做这样的过滤器?
谢谢
【问题讨论】:
-
旁注:您的日期数学有缺陷。如果当前日期比上个月支持的日期更大,you're going to end up in the wrong month。您需要首先获取月初,因为所有月份都以 1 开头。此外,在时间戳列上使用
DATE将使系统忽略任何索引:您应该改用shipment_tms >= TIMESTAMP(<date math>, '00:00:00')。跨度> -
嗨,这是一个有效的场景。但是,这是在每月的同一天(13 日)执行的,因此它始终具有相同的值和模式。谢谢
-
However, this is executed on the same date of the month (the 13th) so it will always have the same values and pattern.- 当然。 暂时。无论当前环境的(某些)变化如何,始终尝试使您的代码能够工作。在不同的日期运行是一个简单的环境变化。请注意,您正在使用的当前代码无法在某些月份的最后一天进行可靠测试!这可能是您关心的问题。
标签: sql db2 ibm-cloud dataconnect