2013-09-23 114 views
0

我的表結構我沒有得到預期的結果,爲什麼?

Name   Null Type   
------------- ---- ------------ 
T_NO    NUMBER  
T_NAME    VARCHAR2(10) 
ENTERING_TIME  TIMESTAMP(6) 
LEAVING_TIME  TIMESTAMP(6) 
TO_DATE   DATE 

Insert語句:

insert INTO t3 VALUES 
    (
    1, 
    'ram', 
    TO_date('01:36:51','HH:MI:SSAM'), 
    TO_date('11:59:51','HH:MI:SSPM'), 
    to_date('23-09-13','dd-mm-yy') 
) 

我的問題是:我特意在PM提到LEAVING_TIME但它顯示AM。我不知道它爲什麼顯示。

是否有這個選擇的任何問題:

select t_no,t_name, TO_CHAR(ENTERING_TIME,'HH12:MI:SSPM'), 
TO_CHAR(LEAVING_TIME,'HH12:MI:SSPM'),TO_DATE from t3 

結果是:按照預期

T_NO|T_NAME|TO_CHAR(ENTERING_TIME,'HH12:MI:SSPM')|TO_CHAR(LEAVING_TIME,'HH12:MI:SSPM')|TO_DATE 
1 ram  09:45:51AM       04:45:51AM  23-SEP-13 
1 ram  10:05:51AM       11:00:51AM  23-SEP-13 
1 ram  01:36:51AM       11:59:51AM  23-SEP-13 
+0

我使用的也是,但我沒有得到@ a_horse_with_no_name – user2801653

回答

1

您的查詢工作。

在您的查詢,

TO_date('11:59:51','HH:MI:SSPM') 

你提到的格式午指標(PM),但是你沒有給在日期字符串它的價值。 因此,它默認爲AM。

你需要做的就是這樣寫。

TO_date('11:59:51PM','HH:MI:SSPM'). 

請注意'HH:MI:SSPM'只是一個格式說明符。它不表示時間是AM還是PM。您可以用AM替換PM,仍然可以得到相同的結果。

+0

雅我得到it.is那裏直接得到了一次從雙到我的表中的任何選擇「插入T3 VALUES ( 1, ‘RAM’, ( (SELECT TO_CHAR(SYSDATE,'HH12:MI:SSpm')as Time FROM DUAL);), ((SELECT TO_CHAR(SYSDATE,'HH12:MI:SSpm')as Time FROM DUAL)), TO_CHAR(SYSDATE,'DD:MM:YY')as Time FROM DUAL);) );'但它顯示錯誤 – user2801653

+0

SYSDATE是DATE類型。由於您的列具有時間戳/日期類型,因此您可以直接插入它。 'insert into t3 values(1,'ram',sysdate,sysdate,sysdate);'此外,您不能僅在DATE/TIMESTAMP列中存儲時間。它將存儲時間和日期。 – Noel

+0

因爲我們不能存儲時間,爲什麼?有沒有其他的選擇 – user2801653

相關問題