sql >> データベース >  >> RDS >> Oracle

Oracleで日付から世紀を取得する方法

    Oracle Databaseでは、TO_CHAR(datetime)を使用できます。 日時の値から世紀を返す関数。

    これを行うには、CCのいずれかを使用できます format要素、またはSCC フォーマット要素。これらを他のフォーマット要素と組み合わせて、序数の表示、世紀の綴りなどを行うことができます。

    CCを使用する例を次に示します。 日付値から世紀を返すformat要素:

    SELECT TO_CHAR(DATE '2030-12-30', 'CC')
    FROM DUAL;

    結果:

    21

    ネガティブセンチュリー

    SCCを使用できます 負の日付を渡すときにマイナス記号を含めるように要素をフォーマットします:

    SELECT TO_CHAR(DATE '-2030-12-30', 'SCC')
    FROM DUAL;

    結果:

    -21

    序数

    THを追加できます 世紀の序数を返すformat要素。

    SELECT TO_CHAR(DATE '2030-12-30', 'CCTH')
    FROM DUAL;

    結果:

    21ST

    「Century」という単語を追加するために任意のテキストを追加することもできます:

    SELECT TO_CHAR(DATE '2030-12-30', 'CCTH "Century"')
    FROM DUAL;

    結果:

    21ST Century

    テキストは二重引用符で囲まれていることに注意してください。

    必要に応じて大文字を使用できます:

    SELECT TO_CHAR(DATE '2030-12-30', 'Ccth "Century"')
    FROM DUAL;

    結果:

    21ST Century

    フォーマットモデルの最初の文字のみを大文字にしたことに注意してください。つまり、Ccthを使用したということです CCthの代わりに 。 CCthと思うかもしれませんが、 小文字の序数になるはずですが、それは機能しません。これを行うと、次のようになります。

    SELECT TO_CHAR(DATE '2030-12-30', 'CCth "Century"')
    FROM DUAL;

    結果:

    21ST Century

    基本的に、フォーマットモデルの最初の2文字が大文字の場合、結果は大文字になります。したがって、タイトルケースを作成するには、フォーマットモデルの最初の文字のみを大文字にします。

    スペルセンチュリー

    SPを追加できます 世紀を綴るフォーマット要素:

    SELECT TO_CHAR(DATE '2030-12-30', 'CCTHSP "Century"')
    FROM DUAL;

    結果:

    21ST Century

    また、必要に応じて大文字と小文字を区別できます:

    SELECT TO_CHAR(DATE '2030-12-30', 'Ccthsp "Century"')
    FROM DUAL;

    結果:

    21ST Century

    THは省略できます 序数が必要ない場合は、フォーマット指定子:

    SELECT TO_CHAR(DATE '2030-12-30', 'Ccsp')
    FROM DUAL;

    結果:

    21

    20世紀と21世紀

    日付が20世紀と21世紀のどちらであると見なされるかについては、次の規則が適用されます。

    • 4桁の年の最後の2桁が01から99(両端を含む)の場合、世紀はその年の最初の2桁より1つ大きくなります。
    • 4桁の年の最後の2桁が00の場合、世紀はその年の最初の2桁と同じです。

    同じ概念が、13世紀、30世紀などの他の世紀にも当てはまります。

    例:

    SELECT 
        TO_CHAR(DATE '1999-12-30', 'CC') AS "1999",
        TO_CHAR(DATE '2000-12-30', 'CC') AS "2000",
        TO_CHAR(DATE '1299-12-30', 'CC') AS "1299",
        TO_CHAR(DATE '1300-12-30', 'CC') AS "1300",
        TO_CHAR(DATE '2999-12-30', 'CC') AS "2999",
        TO_CHAR(DATE '3000-12-30', 'CC') AS "3000"
    FROM DUAL;
    

    結果:

       1999    2000    1299    1300    2999    3000 
    _______ _______ _______ _______ _______ _______ 
    20      20      13      13      30      30     

    Oracleで日時値をフォーマットするために使用できるフォーマット要素は他にもたくさんあります。完全なリストについては、Oracleの日時フォーマット要素のリストを参照してください。


    1. SQL ServerのLEFT()とSUBSTRING():違いは何ですか?

    2. PDOを使用してMySQLから数値型を取得するにはどうすればよいですか?

    3. OracleAnalytic関数-ウィンドウ句のリセット

    4. 推移閉包に使用される再帰クエリ