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

日付を入力しながらOracleでパーティションの名前を取得する方法

    WITH DATA AS (
    select table_name,
           partition_name,
           to_date (
              trim (
              '''' from regexp_substr (
                         extractvalue (
                           dbms_xmlgen.getxmltype (
                           'select high_value from all_tab_partitions where table_name='''
                                    || table_name
                                    || ''' and table_owner = '''
                                    || table_owner
                                    || ''' and partition_name = '''
                                    || partition_name
                                    || ''''),
                                 '//text()'),
                              '''.*?''')),
              'syyyy-mm-dd hh24:mi:ss')
              high_value_in_date_format
      FROM all_tab_partitions
     WHERE table_name = 'SALES' AND table_owner = 'SH'
     )
     SELECT * FROM DATA
       WHERE high_value_in_date_format < SYSDATE
    /
    
    TABLE_NAME           PARTITION_NAME       HIGH_VALU
    -------------------- -------------------- ---------
    SALES                SALES_Q4_2003        01-JAN-04
    SALES                SALES_Q4_2002        01-JAN-03
    SALES                SALES_Q4_2001        01-JAN-02
    SALES                SALES_Q4_2000        01-JAN-01
    SALES                SALES_Q4_1999        01-JAN-00
    SALES                SALES_Q4_1998        01-JAN-99
    SALES                SALES_Q3_2003        01-OCT-03
    SALES                SALES_Q3_2002        01-OCT-02
    SALES                SALES_Q3_2001        01-OCT-01
    SALES                SALES_Q3_2000        01-OCT-00
    SALES                SALES_Q3_1999        01-OCT-99
    SALES                SALES_Q3_1998        01-OCT-98
    SALES                SALES_Q2_2003        01-JUL-03
    SALES                SALES_Q2_2002        01-JUL-02
    SALES                SALES_Q2_2001        01-JUL-01
    SALES                SALES_Q2_2000        01-JUL-00
    SALES                SALES_Q2_1999        01-JUL-99
    SALES                SALES_Q2_1998        01-JUL-98
    SALES                SALES_Q1_2003        01-APR-03
    SALES                SALES_Q1_2002        01-APR-02
    SALES                SALES_Q1_2001        01-APR-01
    SALES                SALES_Q1_2000        01-APR-00
    SALES                SALES_Q1_1999        01-APR-99
    SALES                SALES_Q1_1998        01-APR-98
    SALES                SALES_H2_1997        01-JAN-98
    SALES                SALES_H1_1997        01-JUL-97
    SALES                SALES_1996           01-JAN-97
    SALES                SALES_1995           01-JAN-96
    
    28 rows selected.
    
    SQL>
    

    SYSDATEの代わりに希望の日付を使用してください 上記のクエリで。または、FUNCTIONを介してINPUTとして渡すこともできます およびRETURN 結果セット。



    1. MySQL-最小値を取得しています

    2. テーブルのセットでCDCを有効にする方法、またはSQLServerのデータベース内のすべてのテーブルで有効にする方法-SQLServerチュートリアル

    3. VARCHAR2でインデックス付けされた連想配列が9つを超える要素を格納しない理由

    4. MySQLでのENUM変数タイプの作成