我的表结构
Name Null Type
------------- ---- ------------
T_NO NUMBER
T_NAME VARCHAR2(10)
ENTERING_TIME TIMESTAMP(6)
LEAVING_TIME TIMESTAMP(6)
TO_DATE DATE
插入声明:
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')
)
我的问题是:我在LEAVING_TIME
中特别提到了PM
,但它显示了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 :(得分:1)
您的查询按预期正常工作。
在您的查询中,
TO_date('11:59:51','HH:MI:SSPM')
您已经提到了格式中的Meridian指标(PM),但您没有在日期字符串中给出它的值。 因此,它默认为AM。
你需要做的就是这样写。
TO_date('11:59:51PM','HH:MI:SSPM').
请注意,'HH:MI:SSPM'只是一种格式说明符。它不表示时间是上午还是下午。您可以使用AM替换PM,但仍可获得相同的结果。