这是我的代码
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
这里显示了我的两张桌子 sales_header表
sales_details表
答案 0 :(得分:6)
试试这个:
WHERE entered_by='2254'
AND ENTERED_DATE BETWEEN trunc (sysdate, 'mm')/*current month*/ AND SYSDATE
答案 1 :(得分:5)
比较条件
的月份 WHERE to_char( sysdate, 'mm' ) = to_char( ENTERED_DATE, 'mm' )
另外
WHERE EXTRACT(month FROM sysdate)=EXTRACT(month FROM ENTERED_DATE)
答案 2 :(得分:2)
穆达西尔的回答对我有用,但我也会检查这一年,以确保你没有获得去年的记录。
WHERE TO_CHAR(ENTERED_DATE, 'mm') = TO_CHAR(SYSDATE, 'mm')
AND TO_CHAR(ENTERED_DATE, 'yyyy') = TO_CHAR(SYSDATE, 'yyyy')
此外,如果您正在运行大型查询,WHERE
子句中的函数可能会降低它的速度。如果是这样,您可能需要考虑基于函数的索引。
答案 3 :(得分:1)
尝试:
SELECT TRUNC(SYSDATE, 'month') FROM DUAL;
答案 4 :(得分:0)
select 'WITHIN' as result
from dual
where '28-FEB-2019' between trunc(last_day(add_months(sysdate, -1))+1) and trunc(last_day(sysdate));
请注意,因为有许多示例仅使用月份,因此您可以获取全年的记录,因此不考虑年份。 另外,正如您所看到的,我正在使用trunc,这是为了避免时间不一致,而只是使用日期。