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

Oracle SQLを使用して、1つの出力日数と曜日をどのように出力しますか?

    フローリンの答えは私がどうするかということですが、NLSの設定には少し注意する必要があります。曜日はNLSの領域の影響を受けるため、米国にいるかのようにこれを実行すると、機能します。

    alter session set nls_territory = 'AMERICA';
    
    select to_char(sysdate, 'D') as d, to_char(sysdate, 'Day') as day from dual;
    
    D DAY
    - ------------------------------------
    6 Friday
    
    select level as dow,
        to_char(trunc(sysdate ,'D') + level, 'Day') as day
    from dual
    connect by level <= 7;
    
    DOW DAY
    --- ------------------------------------
      1 Monday
      2 Tuesday
      3 Wednesday
      4 Thursday
      5 Friday
      6 Saturday
      7 Sunday
    

    ただし、英国で実行されている同じクエリは休日です:

    alter session set nls_territory = 'UNITED KINGDOM';
    
    select to_char(sysdate, 'D') as d, to_char(sysdate, 'Day') as day from dual;
    
    D DAY
    - ------------------------------------
    5 Friday
    
    select level as dow,
        to_char(trunc(sysdate ,'D') + level, 'Day') as day
    from dual
    connect by level <= 7;
    
    DOW DAY
    --- ------------------------------------
      1 Tuesday
      2 Wednesday
      3 Thursday
      4 Friday
      5 Saturday
      6 Sunday
      7 Monday
    

    ...そしてそれを修正するために計算を調整する必要があります:

    select level as dow,
        to_char(trunc(sysdate ,'D') + level - 1, 'Day') as day
    from dual
    connect by level <= 7;
    
    DOW DAY
    --- ------------------------------------
      1 Monday
      2 Tuesday
      3 Wednesday
      4 Thursday
      5 Friday
      6 Saturday
      7 Sunday
    

    必要に応じて、曜日の名前に使用する言語を個別に指定することもできます。

    select level as dow,
        to_char(trunc(sysdate ,'day') + level - 1, 'Day',
            'NLS_DATE_LANGUAGE=FRENCH') as day
    from dual
    connect by level <= 7;
    
    DOW DAY
    --- --------------------------------
      1 Lundi
      2 Mardi
      3 Mercredi
      4 Jeudi
      5 Vendredi
      6 Samedi
      7 Dimanche
    

    to_char()のドキュメント nls_date_languageを使用 と曜日、およびグローバリゼーションサポートガイドの詳細。



    1. PostgreSQLでテーブルを参照するすべてのストアドプロシージャを一覧表示する3つの方法

    2. SQLサーバーの接続タイムアウト

    3. Ubuntu16.10でPostgreSQLを9.6から10.0にアップグレードします

    4. Rails 3、ActiveRecord、PostgreSQL-.uniqコマンドが機能しませんか?