2017-09-06 61 views
0

我想插入nvarchar2值到我的oracle日期字段。當我的源nvarchar2值是'20701130'時,我想在我的oracle列中將它保存爲'30/11/2070'。而且,如果源值爲'21150529',我想將它保存爲'29/05/2115'。甲骨文 - 與正確的世紀信息保存日期

我嘗試了不同的格式化選項來達到這個目的,但是這一年總是會被保存爲兩位數字,並沒有指出正確的世紀。

我的一個查詢:

INSERT INTO MY_TABLE (MY_DATE_FIELD) 
VALUES(TO_DATE('21061030', 'RRRR-MM-DD')); 

現在,當我在上面的查詢後選擇,我得到的結果爲30/10/06這不是我們想要的,它應該是'30/10/2106' 。

因此,任何幫助表示讚賞。

Kiran。

+0

這個查詢的結果是什麼:'select p.value from nls_instance_parameters p where p.PARAMETER ='NLS_DATE_FORMAT'' - > _'DD/MM/RRRR'_ or _'DD/MM/RR'_? –

回答

0

你可以去了解它在許多方面:

你改變了會議的日期格式本身要實現的格式,如:

ALTER SESSION SET NLS_DATE_FORMAT =「RRRR-MM-DD 「;

另一種方法是一旦您使用to_date傳遞的字符串實現了日期,那麼您可以再次添加to_char以顯示所需格式的日期。

To_date將使用您提供的格式將您的字符串轉換爲日期,但在選擇它時仍然會按照會話中提供的格式顯示日期,這就是爲什麼我們使用To_char將其更改爲我們想要顯示的格式它成。

選擇TO_CHAR(TO_DATE( '21061030', 'RRRR-MM-DD'), 'RRRR-MM-DD')從雙 「DATE」;

0

感謝您的幫助。

如果有人有興趣,我在下面粘貼了我的SQL。

-- To insert into table 
UPDATE MY_TABLE SET MY_DATE_FLD = TO_CHAR(TO_DATE('21061030', 'RRRR-MM-DD'),'DD-MM-YYYY') ; 

-- To read from the table, this gave me the result 30/01/2106 
select TO_CHAR(DATE_FLD,'DD/MM/YYY') AS START_DATE from MY_TABLE; 

感謝幫助。 Kiran。