Microsoft Query SQL 当前日期优化

Microsoft Query SQL Current Date Optimization

我在 Microsoft Query 中使用 SQL 将基于 Progress 构建的服务器中的数据转储到我的 Excel 表中。最近,我开始根据日期更改数据,从而使这些报告更加可靠。我的问题是这会大大增加 运行 时间。其中一个需要的报告可以 运行 在不到 10 秒到超过 2 分钟的时间内完成。在这个例子中,我正在提取我们的销售记录并查看订单发货的日期,如果是未来,我想显示 0,如果是过去,我希望它显示发货的单位。字段 oeh_shp_date 似乎是 MM/DD/YYYY 格式,所以这是我拼凑的,虽然它并不漂亮。任何有关如何加快速度的建议将不胜感激。谢谢!

CASE
  WHEN ord_head.oeh_shp_date > RIGHT('0' + RTRIM(Cast(Month(CURDATE()) as CHAR(2))),2) + '/' + RIGHT('0' + RTRIM(Cast(DayOfMonth(CURDATE()) as CHAR(2))),2) + '/' + Cast(Year(CURDATE()) as CHAR(4)) then 0
  ELSE oe_ast.oel_plan_units
END AS 'UnitsShipped'

由于您查询的是 postgresql 数据库,to_date 等标准 postgresql 函数应该 有效。继续尝试以下操作:

CASE
  WHEN to_date(ord_head.oeh_shp_date, 'MM/DD/YYYY') > current_date THEN 0
  ELSE oe_ast.oel_plan_units
END AS UnitsShipped

唯一令我感到奇怪的是,您的查询似乎不是 Postgresql 查询语言。例如 CURDATE 不是函数。 CURDATE 是 MySql 中的一个函数,所以也许您弄错了服务器类型?如果是这样,那么试试这个:

CASE
  WHEN str_to_date(ord_head.oeh_shp_date, '%m/%d/%Y') > curdate() THEN 0
  ELSE oe_ast.oel_plan_units
END AS 'UnitsShipped'