Oracle Databaseでは、fm
を使用できます。 (塗りつぶしモード)日付に適用される可能性のある先行ゼロを抑制するためのフォーマット修飾子。このフォーマット修飾子は、先行ゼロと末尾ブランクを含むパディングを抑制します。
fm
を使用するには format修飾子。日付のフォーマット方法を指定するときに、フォーマットモデルに含めます。たとえば、TO_CHAR()
を使用する場合 日付をフォーマットする関数、またはNLS_DATE_FORMAT
などのNLSパラメーター 現在のセッションの日付形式を設定するときのパラメータ。
例
デモンストレーションの例を次に示します。
SELECT
TO_CHAR(DATE '2009-08-01', 'DD-MM-YY') AS "Without fm",
TO_CHAR(DATE '2009-08-01', 'fmDD-MM-YY') AS "With fm"
FROM DUAL;
結果:
Without fm With fm _____________ __________ 01-08-09 1-8-9
元の結果(fm
なし)がわかります 修飾子)は、すべての日付部分の先行ゼロを返します。この場合、fm
修飾子は、3つの日付部分すべての先行ゼロを抑制しました。
fm
修飾子は、結果に実際に先行ゼロがある場合にのみ結果に影響します。
これは、2桁を占めるため、先行ゼロがない日付部分を含む日付です。
SELECT
TO_CHAR(DATE '2029-12-01', 'DD-MM-YY') AS "Without fm",
TO_CHAR(DATE '2029-12-01', 'fmDD-MM-YY') AS "With fm"
FROM DUAL;
結果:
Without fm With fm _____________ __________ 01-12-29 1-12-29
一部の日付部分でのみ塗りつぶしモードを指定する方法
上記の例では、すべての日付部分の先行ゼロが抑制されています。先行ゼロは、日、月、および年から削除されました。これは、単一のfm
を配置すると フォーマットモデルの開始時に、すべてを抑制します。 結果の後続の先行ゼロ。
日と月から先行ゼロのみを削除し、年にそれを保持したいとします。この場合、次のことができます。
SELECT TO_CHAR(DATE '2009-08-01', 'fmDD-MM-fmYY')
FROM DUAL;
結果:
1-8-09
fm
モディファイアは基本的にスイッチのように機能します。 1つを含めると、最後まで、または別のfm
に遭遇するまでゼロを抑制します。 修飾子。 2番目のfm
がある場合 修飾子の場合、先行ゼロはそのポイントを超えて抑制されません。
3つのfm
を含めると次のようになります 修飾子–各日付部分の前に1つ:
SELECT TO_CHAR(DATE '2009-08-01', 'fmDD-fmMM-fmYY')
FROM DUAL;
結果:
1-08-9
したがって、この場合、fm
修飾子は基本的に有効にされ、次に無効にされ、次に再び有効にされました。
NLSパラメータ
NLS_DATE_FORMAT
などのNLSパラメータで塗りつぶしモードを指定することもできます
例:
ALTER SESSION SET NLS_DATE_FORMAT = 'fmDD-MM-fmRR';
SELECT DATE '2009-08-07' FROM DUAL;
結果:
7-8-09