Getting/extract 完整日期(日期时间)的月份和年份

Getting/extract month and year from full date (datetime)

我有日期数据类型的列我正在尝试提取月份和年份 从完整日期计算当年一个月内的总销售额 但我得到了错误,期待 , ;当从我测试下面的查询中找到时 在蟾蜍中,它工作正常,无论如何,查询不会给我我想要的东西,蟾蜍的结果只有一个月,我需要根据月份和年份进行计算

我尝试了 trunc 但结果将是 DD-MM-YYYY

To_char 在数据库列上工作,但在表单生成器

上与 text_item 一起工作

那么如何让该查询起作用,是否有提取月份和年份的方法?

SELECT NVL(SUM(TOTAL_PRICE),0) 
  INTO :DUMMY.M_TOTAL_ORDERS
  FROM ORDERS 
  WHERE EXTRACT(MONTH FROM ORDER_DATE)= EXTRACT(MONTH FROM SYSDATE);

你说你遇到了一个错误,但你没有告诉我们是什么错误。您告诉我们查询 "works fine" 但它并不完全符合您的要求。带有示例数据和预期结果的测试用例会很有帮助。

我猜你想要

SELECT NVL( SUM(total_price), 0)
  FROM orders
 WHERE trunc( order_date, 'MM' ) = trunc( sysdate, 'MM' )

我希望 return 我认为您想要的结果。但是它不能在 order_date 上使用常规索引(您可以在 trunc(order_date, 'MM') 上创建一个可以使用的基于函数的索引)。

SELECT NVL( SUM(total_price), 0)
  FROM orders
 WHERE order_date BETWEEN trunc( sysdate, 'MM' ) AND sysdate

也可以工作(假设 order_date 总是小于 sysdate)并且允许您在 order_date 上使用索引(如果存在的话)。

如果这不是您想要的,发布可重现的测试用例将非常有帮助。