【问题标题】:How do you pull YTD data with a pass through query?如何通过直通查询提取 YTD 数据?
【发布时间】:2017-01-09 18:14:15
【问题描述】:

我需要将 YTD 日期范围参数添加到传递查询。过去,我一直使用以下几行来提取 YTD 数据:

WHERE
  TABLENAME.PKUP_DATE BETWEEN to_date('01/01/2016', 'mm/dd/yyyy') AND
  to_date('08/02/2016', 'mm/dd/yyyy')

将来,我想在不输入日期范围的情况下提取 YTD 数据。这可以通过创建具有以下条件的常规查询来完成:

Year([CPLD_DATE]) = Year(Date())

但是,当我将此行转换为直通查询时,它会出错。如果有人可以帮助我使用正确的语法,我将不胜感激。

【问题讨论】:

  • 您遇到了什么错误? [CPLD_DATE] 中的值是什么?请提供完整的查询和数据
  • 这是oracle SQL吗?
  • 另外,传递查询到什么 RDMS? SQL 服务器? MySQL?后格雷斯?甲骨文? DB2?这些都带有不同的 SQL 方言,尤其是日期时间处理。
  • 我使用 Oracle,迫使我按照您的建议使用 Oracle 特定的日期时间处理。请看下面我的回答。 @Parfait

标签: sql ms-access-2010


【解决方案1】:

在我看来像 PLSQL,因此可能是:

WHERE
   TABLENAME.PKUP_DATE 
       BETWEEN TRUNC(CURRENT_DATE, YEAR) 
       AND CURRENT_DATE

【讨论】:

    【解决方案2】:

    当使用纯 SQL 查询时,以下函数将起作用。基于 SO 上的very similar question

    WHERE PKUP_DATE > ADDDATE(year, -1, getdate());
    

    但是,这与 Oracle 不兼容,导致我改为使用以下功能。

    WHERE PKUP_DATE > ADD_MONTHS(SYSDATE, -12);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-14
      • 1970-01-01
      • 1970-01-01
      • 2017-03-29
      • 1970-01-01
      • 2013-09-24
      • 1970-01-01
      相关资源
      最近更新 更多