2

私はこの問題を抱えています: 月、日、時間のみで fillmode を使用して、sysdate を文字列に変換したいです。でも、

 select to_char(sysdate, 'fmmm/fmdd/yyyy fmhh12:mi:ss am') from dual

次のような結果が得られます

11/13/2013 9:45:**0** am

あるべきなのに

11/13/2013 9:45:**00** am

何かご意見は?前もって感謝します

4

1 に答える 1

4

ドキュメントに書かれているように、次のFM理由から、フォーマット モデルを使用しないでください。FM

FM- 先頭または末尾の空白の抑制を指示するために、他の要素と組み合わせて使用​​されます

したがってFM、可能であれば、使用すると最終的な文字列が短くなります。

フォーマット モデル マスクからを削除するFMと、期待どおりに機能します。

select to_char(TRUNC(sysdate), 'mm/dd/yyyy hh12:mi:ss am') from dual;

出力:

2013 年 11 月 13 日午前 12:00:00。

Nicholas Krasnov のコメントを読んだ後、回答を変更しました (ありがとう)。

Oracle ドキュメントの日付形式モデルの詳細:形式モデル

編集

はい、提供したコードは、たとえば を返し01-01-2013ます。先頭にゼロを付けずに月と日を表示したい場合は、次のように記述しますfmDD-MM-YYYY fmHH:MI:SS

1 つ目fmは、先頭のゼロを切り捨てます。2番目fmはその機能をオフにし、日付の時間部分の先行ゼロを取得します。例:

SELECT TO_CHAR(
         TO_DATE('01-01-2013 10:00:00', 'DD-MM-YYYY HH12:MI:SS'),
         'fmmm/dd/yyyy fmhh12:mi:ss am')
FROM dual;

出力:

2013 年 1 月 1 日午前 10:00:00。
于 2013-11-13T08:53:33.003 に答える