如何从第一次约会以来获得ORACLE的当月记录.

Pri*_*ckZ 3 sql oracle

这是我的代码

SELECT h.ENTERED_DATE,
       d.DENOMINATION,
       sum(h.invoice_total-h.TOTTAL_DISCOUNT)as amount 
  FROM sales_details d
       LEFT JOIN sales_header h 
            ON d.invoice_id=h.invoice_id
 WHERE entered_by='2254'
--HERE IS NEED TO GET DETAILS CURRENT MONTH 1st Date to Sysdate 
GROUP BY 
       ENTERED_DATE,
       d.DENOMINATION
ORDER BY 
       entered_date,
       denomination
Run Code Online (Sandbox Code Playgroud)
  • 在我的应用程序中,只发送sysdate作为参数. 无需SYSDATE-30.需要第一个日期到SYSDATE

这里显示了我的两个表 sales_header表 在此输入图像描述

sales_details表 在此输入图像描述

i10*_*100 7

试试这个:

WHERE entered_by='2254'
AND ENTERED_DATE BETWEEN trunc (sysdate, 'mm')/*current month*/ AND SYSDATE
Run Code Online (Sandbox Code Playgroud)


Ton*_* L. 6

Mudassir 的答案对我有用,但我也会检查年份,以确保您没有得到去年的记录。

WHERE TO_CHAR(ENTERED_DATE, 'mm') = TO_CHAR(SYSDATE, 'mm')
  AND TO_CHAR(ENTERED_DATE, 'yyyy') = TO_CHAR(SYSDATE, 'yyyy')
Run Code Online (Sandbox Code Playgroud)

此外,如果您正在运行大型查询,WHERE子句中的函数可能会减慢查询速度。如果是这样,您可能需要考虑基于函数的索引。


Mud*_*san 5

比较几个月的情况

WHERE to_char( sysdate, 'mm' ) = to_char( ENTERED_DATE, 'mm' )

WHERE EXTRACT(month FROM sysdate)=EXTRACT(month FROM ENTERED_DATE)