私はこの問題を抱えています: 月、日、時間のみで 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
何かご意見は?前もって感謝します
ドキュメントに書かれているように、次の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。