web-dev-qa-db-ja.com

to_char関数を使用して文字列に解析するときに、Oracleの日と月の値から先行ゼロを削除する方法は?

Selectステートメントの日と月の値の前に先行ゼロがない日付を取得したいのですが。次のクエリを実行すると

 select to_char(sysdate, 'dd.mm.yyyy') from dual;

結果として2014年3月21日を取得します。さらに、たとえば、今日が2014年3月7日だった場合、07.03.2014になります。これらの先行ゼロを取り除くにはどうすればよいですか?

17
Yulian
select   to_char(sysdate,'DD.MM.YY') -- Without Fill Mode
,        to_char(sysdate-20,'fmDD.fmMM.YY')  -- With Fill Mode, 20 days ago
  from dual;

戻り値

21.03.14    | 1.3.14

FMフィルモード。

TO_CHAR関数の日時書式要素では、この修飾子は、後続の文字要素(MONTHなど)の空白を抑制し、日付書式モデルの後続の数値要素(MIなど)の先行ゼロを抑制します。 FMがない場合、文字要素の結果は常に空白で固定長に埋め込まれ、数値要素の場合は常に先行ゼロが返されます。空白の埋め込みを抑制するFMでは、戻り値の長さが異なる場合があります。

43

これを試して:

select to_char(to_date('20-oct-2000'),'fmmm/dd/fmrr') from dual

上記のクエリは、Oracleの日と月の値から先行ゼロを削除します。

2
sen

これはエレガントとはほど遠いですが、機能します。

select to_number(to_char(sysdate,'dd')) || '.' || to_number(to_char(sysdate,'mm')) || '.' || to_number(to_char(sysdate,'yyyy')) from dual

基本的に、日付の各部分を数値に変換します

0
pablomatico