如何使用Oracle获取日期的年月

use*_*012 -2 sql oracle date

如何使用Oracle在where子句中获取日期的年和月。

我曾经使用过SQL Server,它就像YEAR(FIELDNAME)和MONTH(FIELDNAME)一样简单。

我尝试了以下方法:

SELECT * 
FROM myschema.mytablename
WHERE   EXTRACT(YEAR FROM  myDATE)  = 2017
Run Code Online (Sandbox Code Playgroud)

但是它给出了ORA-30076错误

fg7*_*8nc 9

SELECT * 
FROM myschema.mytablename
WHERE   TO_CHAR(myDATE, 'YYYY') = '2017';
Run Code Online (Sandbox Code Playgroud)

将 DATE 的年份部分显式转换为 CHAR 并将其与文字进行比较。对于年份和月份比较:

SELECT * 
    FROM myschema.mytablename
    WHERE   TO_CHAR(myDATE, 'YYYY') = '2017' AND TO_CHAR(myDate, 'MM') = '07';
Run Code Online (Sandbox Code Playgroud)


JRG*_*JRG 5

您是否尝试过EXTRACT()?

SELECT EXTRACT(YEAR FROM DATE '2017-12-01') FROM DUAL;
2017

SELECT EXTRACT(MONTH FROM DATE '2017-12-01') FROM DUAL;
12
Run Code Online (Sandbox Code Playgroud)

我在11g的sql小提琴中尝试过此方法,它也可以在WHERE子句中使用。

http://sqlfiddle.com/#!4/fb2b09/2

在此处输入图片说明

  • 我需要将其放在我的 where 子句中。是否可以? (3认同)