Question: here is my code

```
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

```

* In my application just send only **sysdate** as parameter.
**no need to SYSDATE-30.
need 1st date to SYSDATE**

here shows my two tables
**sales\_header table**
![enter image description here](https://i.stack.imgur.com/AWcn6.png)

**sales\_details table**
![enter image description here](https://i.stack.imgur.com/viDLQ.png)

Answer: 
Mudassir's answer worked for me but I would also check the year to make sure you are not getting last year's records.

```
WHERE TO_CHAR(ENTERED_DATE, 'mm') = TO_CHAR(SYSDATE, 'mm')
  AND TO_CHAR(ENTERED_DATE, 'yyyy') = TO_CHAR(SYSDATE, 'yyyy')

```

Also, if you are running a large query, functions in your `WHERE` clause can slow it down. If so, you may want to consider a function based index.
Compare months in where condition

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

Also

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