2011-11-15 71 views
1

我希望將我的列時間視爲'hh24:mi:ss',但即使我將它插入爲to_date('13:00:00','hh24:mi:ss')。它仍然顯示爲日期格式。我嘗試了不同的方法來轉換,我不想改變會話。通過Oracle顯示時間格式

這裏是我的表創建:

CREATE TABLE Test 
    (
    Name VARCHAR2(20), 
    Description Varchar2(20), 
    StudyTime Date, 
    SleepTime Date, 
); 

插入:

INSERT INTO Test 
VALUES('JUDY','STUDYING AT ABC', (To_Date('01:00:00', 'HH24:MI:SS')), 
      (TO_DATE('06:35:00', 'HH:MI:SS'))); 

顯示結果:

Judy,Studying at abc,11-Nov-2011,11-Nov-2011 

感謝任何人的幫助!

回答

5

您的IDE或SQL * Plus設置顯示的默認日期格式爲DD-Mon-YYYY。 即使您只輸入時間格式,oracle仍然會將其視爲完整的日期和時間,因此2011年11月11日的日期(您需要注意這一點!)。

然後,當您選擇所有列時,無論您使用哪個接口來顯示結果,都會顯示日期列的字符表示形式,如果未指定它將使用默認的NLS格式設置。 請參閱:http://www.adp-gmbh.ch/ora/admin/nls_levels.html

要麼更改NLS日期格式設置,要麼使用TO_CHAR指定想要的結果格式。

嘗試:

SELECT name, 
     description, 
     TO_CHAR(studytime, 'HH24:MI:SS') as studytime, 
     TO_CHAR(sleeptime, 'HH:MI:SS') as sleeptime 
    FROM test; 

注:我使用HH24代替studytimeHH代替sleeptime,正如您在輸入數值時所做的那樣。

這應該顯示在正確的格式。

+0

我希望從測試中選擇*而不寫出所有列。可能嗎?我知道通過在to_char格式中選擇它們會起作用。 – JLearner

+0

是的,您需要在IDE中更改日期列的NLS設置以顯示DATE列的時間部分。 – Ollie

+0

好的。通過更改nls date_time格式,我希望在'dd:mon:yyyy'中格式化的日期的其餘部分將變爲'hh24:mi:ss'。還有其他解決方案嗎? – JLearner