Oracle中如何选择特定日期

fan*_*aid 5 sql oracle date

我只想选择 Oracle 数据库中的第 1 个和第 20 个日期。这是我的查询。

SELECT INVOICE_DATE 
FROM invoice_debt@stilng1_lngrpt2 
WHERE INVOICE_DATE = TO_DATE('01', 'DD')
AND INVOICE_DATE = TO_DATE('20','DD')
AND INVOICE_DATE > TO_DATE('30-12-2010', 'DD-MM-YYYY')
AND INVOICE_DATE IS NOT NULL GROUP BY INVOICE_DATE 
ORDER BY INVOICE_DATE DESC;
Run Code Online (Sandbox Code Playgroud)

我的查询运行如下:

  1. 仅选择第一个日期
  2. 仅选择第 20 个日期
  3. 选择日期 > 2010 年 12 月 30 日

但没有任何记录返回。

我尝试使用EXTRACT获取日期,但我无法使用WHERE子句。

SELECT 
EXTRACT(DAY FROM TO_DATE(INVOICE_DATE, 'DD-MM-YY')) as DAY_EXTRACT 
FROM invoice_debt@stilng1_lngrpt2;
Run Code Online (Sandbox Code Playgroud)

请帮助我谢谢。:)

psa*_*j12 4

对日期使用 OR 条件,因为您不能将相同的发票日期设置为第 1 天和第 20 天,并且还使用 to_char 作为发票日期,因为 to_date 仅返回一个日期

SELECT INVOICE_DATE 
FROM invoice_debt@stilng1_lngrpt2 
WHERE (to_char(INVOICE_DATE, 'DD')='01'
OR to_char(INVOICE_DATE,'DD')='20')
AND INVOICE_DATE > TO_DATE('30-12-2010', 'DD-MM-YYYY')
AND INVOICE_DATE IS NOT NULL GROUP BY INVOICE_DATE 
ORDER BY INVOICE_DATE DESC;
Run Code Online (Sandbox Code Playgroud)