この記事には、OracleDatabaseでの日付のフォーマットの一般的な例が含まれています。
セッションのデフォルトの日付形式は、さまざまなNLS初期化パラメーターによって決定されます(これらを確認する方法は次のとおりです)。これらのパラメータを利用して、ロケール対応のフォーマットを出力できます。
TO_CHAR(number)
などの関数を使用することもできます 日付を文字列に変換し、その場で好きなようにフォーマットします。
デフォルトの日付形式
Oracleで日付を返す場合、デフォルトでは、現在のセッションのデフォルトの日付形式で返されます。
例:
SELECT DATE '2030-12-10' FROM DUAL;
結果:
10/DEC/30
この場合、私のセッションのデフォルトの日付形式はDD/MON/RR
です。 、したがって、結果はそれを反映しています。
NLS_TERRITORY
を変更することで、形式を変更できます。 パラメータ(日時パラメータなどの他のパラメータを暗黙的に変更する)、またはNLS_DATE_FORMAT
を変更する パラメータを直接。
NLS_TERRITORY
を変更するとどうなりますか 別の地域へのパラメータ:
ALTER SESSION SET NLS_TERRITORY = 'Germany';
SELECT DATE '2030-12-10' FROM DUAL;
結果:
10.12.30
デフォルトの日付形式は、そのロケールの形式を反映するように更新されました。
NLS_TIME_FORMAT
など、他の日時NLSパラメータもあります。 、NLS_TIME_TZ_FORMAT
、NLS_TIMESTAMP_FORMAT
、および NLS_TIMESTAMP_TZ_FORMAT
日時の形式を変更するときは注意する必要があります。
現在のセッションのデフォルトの日付形式を変更する場合は、「セッションの日付形式を変更する方法」も参照してください。
TO_CHAR()
機能
T TO_CHAR(datetime)
関数は日時値を受け入れ、指定した方法でフォーマットされた文字列を返します。
簡単な例を次に示します。
SELECT TO_CHAR(
DATE '2035-09-26',
'Dy, DD Month YYYY'
)
FROM DUAL;
結果:
Wed, 26 September 2035
ここで、関数は、最初の引数で指定された日付を、2番目の引数で指定された形式で返しました。
2番目の引数は、フォーマットモデルを提供します。フォーマットモデルは、1つ以上のフォーマット要素で構成できます。たとえば、Dy
DD
と同様に、はフォーマット要素です。 、Month
、など。
形式を指定しない場合は、セッションのデフォルトの形式を使用して返されます。
この関数で日時値をフォーマットするために使用できるフォーマット要素のリストについては、Oracleの日時フォーマット要素の完全なリストを参照してください。
以下はより具体的な例です。
曜日の名前を返す
必要に応じて、個々の日付パーツを返品できます。たとえば、日名だけ、月名だけを返すことができます。必要なのは、フォーマットモデルの唯一のフォーマット要素として該当するフォーマット要素を使用することだけです。
曜日名を返す例は次のとおりです:
SELECT TO_CHAR(DATE '2035-09-26', 'Day')
FROM DUAL;
結果:
Wednesday
この場合、私は完全な日の名前を返しました。
Dy
を使用できます 前の例のように、短い日の名前を返します:
SELECT TO_CHAR(DATE '2035-09-26', 'Dy')
FROM DUAL;
結果:
Wed
月の名前を返す
月の名前を返す例を次に示します。
SELECT TO_CHAR(DATE '2035-09-26', 'Month')
FROM DUAL;
結果:
September
そして短い月の名前:
SELECT TO_CHAR(DATE '2035-09-26', 'Mon')
FROM DUAL;
結果:
September
大文字と小文字の区別
前の例では、日と月の名前の最初の文字を大文字にしました。
または、すべて大文字を使用して曜日と月の名前を大文字で返し、すべて小文字を使用して小文字で返すこともできます。
SELECT
TO_CHAR(DATE '2035-09-26', 'DY, Dy, dy')
FROM DUAL
UNION ALL
SELECT
TO_CHAR(DATE '2035-09-26', 'DAY, Day, day')
FROM DUAL
UNION ALL
SELECT
TO_CHAR(DATE '2035-09-26', 'MON, Mon, mon')
FROM DUAL
UNION ALL
SELECT
TO_CHAR(DATE '2035-09-26', 'MONTH, Month, month')
FROM DUAL;
結果:
WED, Wed, wed WEDNESDAY, Wednesday, wednesday SEP, Sep, sep SEPTEMBER, September, september
言語
NLS_DATE_LANGUAGE
パラメータは、スペルアウトされる日付部分の言語(曜日名や月名など)を決定するために使用されます。このパラメータのデフォルト値は、NLS_LANGUAGE
から派生しています。 パラメータ。
NLS_DATE_LANGUAGE
を更新する例を次に示します。 パラメータを入力し、曜日名と月名を含むフォーマットされた日付を返します:
ALTER SESSION SET NLS_DATE_LANGUAGE = 'Spanish';
SELECT TO_CHAR(DATE '2035-09-26', 'Dy, DD Month YYYY')
FROM DUAL;
結果:
Mié, 26 Septiembre 2035
言語は、TO_CHAR()
内から明示的に指定することもできます。 関数自体。これにより、現在のセッションのデフォルトの言語設定を、それらの設定に影響を与えることなく一時的に上書きできます。
例:
ALTER SESSION SET NLS_DATE_LANGUAGE = 'English';
SELECT TO_CHAR(
DATE '2035-09-26',
'Dy, DD Month YYYY',
'NLS_DATE_LANGUAGE = Spanish'
)
FROM DUAL;
結果:
Mié, 26 Septiembre 2035
この例では、現在のセッションを英語を使用するように設定してから、クエリを実行してスペイン語を使用して日付を出力しました。
以前にほのめかしたように、スペイン語で日付を出力しても、英語の設定には影響しませんでした。これを示すために、その直後に次のクエリを実行しました(NLS_DATE_LANGUAGE
を変更せずに) パラメータ)。
SELECT TO_CHAR(
DATE '2035-09-26',
'Dy, DD Month YYYY'
)
FROM DUAL;
結果:
Wed, 26 September 2035
予想どおり、結果は現在のセッションのデフォルト言語である英語になります。