2017-07-09 95 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';