从完整日期(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);

你说你得到了一个错误,但你没有告诉我们是什么错误。您告诉我们查询"工作正常",但它并没有完全按照您的要求执行。带有示例数据和预期结果的测试用例将非常有帮助。

我猜你想要

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

,我希望返回我认为你想要的结果。但是它不能在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上使用索引(如果存在的话)。

如果这不是你所追求的,发布一个可重复的测试用例将非常有帮助。

最新更新