2017-07-09 89 views
-4

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

我曾经使用过SQL服务器,它和YEAR(FIELDNAME)和MONTH(FIELDNAME)一样简单。

我曾尝试以下:

SELECT * 
FROM myschema.mytablename 
WHERE EXTRACT(YEAR FROM myDATE) = 2017 

但是它给了ORA-30076错误

+0

它连接到Oracle 11g – user2597012

+1

什么'myDATE'的数据类型? –

回答

0

您是否尝试过EXTRACT()?

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

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

我在11g的sql小提琴中试过这个,它也在WHERE子句中工作。

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

enter image description here

+0

我需要这个在我的where子句中。可能吗? – user2597012

+0

你可以尝试SELECT * FROM table_name WHERE some_field_name = EXTRACT(YEAR FROM DATE date_field_name);基本上,提取函数将从给定的字段名称中提取请求的日期属性。 – JRG

+0

我试过了,它给ORA-30076错误。 – user2597012

0

您的查询应该工作,但更好的选择将是

SELECT * 
    FROM YOUR_TABLE 
    WHERE MY_DATE BETWEEN TO_DATE('01-JAN-2017', 'DD-MON-YYYY') 
        AND TO_DATE('01-JAN-2018', 'DD-MON-YYYY') - INTERVAL '1' SECOND 

好运。

0
SELECT * 
FROM myschema.mytablename 
WHERE TO_CHAR(myDATE, 'YYYY') = '2017'; 

显式地转换日期的年份部分为CHAR,并与文字相比较。 对于年份和月份比较:

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