0

私のテーブル構造

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 ラム 09:45:51AM 04:45:51AM 23-SEP-13
1 ラム 10:05:51AM 11:00:51AM 23-SEP-13
1 ラム 01:36:51AM 11:59:51AM 23-SEP-13
4

1 に答える 1

1

クエリは意図したとおりに機能しています。

あなたのクエリでは、

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

形式で子午線インジケータ (PM) について言及しましたが、日付文字列でその値を指定していません。そのため、AM としてデフォルト設定されます。

あなたがする必要があるのは、このように書くことです。

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

「HH:MI:SSPM」は単なるフォーマット指定子であることに注意してください。時刻が AM か PM かを示すものではありません。PM を AM に置き換えても、同じ結果が得られます。

于 2013-09-23T08:27:20.760 に答える