2013-09-23 54 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

相关问题