4

私は41293オラクルのように日付を持っています。どうすればDD/MON/YYYYフォーマットで表示できますか?

それをコピーしてExcelに貼り付けて日付形式に変更すると、01/19/13 助けてくださいと表示されます。

4

3 に答える 3

4

Oracleフォーラムからの引用:

format は、スプレッドシートの日付型にどのような形式があるかをオラクルに伝えるためのものであるため、これを行うにはツールが必要です。Excel で日付の書式設定を選択していない場合でも、プレビューアでは日付として表示されます。これからの形式をガイドとして使用して、データ型パネルに入ります。

したがって、プレビューアで 2006 年 1 月 19 日のような日付がある場合、その列を挿入することを選択した場合のデータ型パネルの形式は DD-MON-YYYY になります。

オプション1:

以下の関数を使用してみてください

FUNCTION FROMEXCELDATETIME ( ACELLVALUE IN VARCHAR2 )
    RETURN TIMESTAMP
IS
    EXCEL_BASE_DATE_TIME CONSTANT TIMESTAMP
            := TO_TIMESTAMP ( '12/31/1899',
                           'mm/dd/yyyy' ) ;

    VAL CONSTANT NUMBER
            := TO_NUMBER ( NULLIF ( TRIM ( ACELLVALUE ),
                                '0' ) ) ;
BEGIN
    RETURN EXCEL_BASE_DATE_TIME
          + NUMTODSINTERVAL ( VAL
                          - CASE
                                WHEN VAL >= 60
                                THEN
                                    1
                                ELSE
                                    0
                            END,
                          'DAY' );
END;

FUNCTION TOEXCELDATETIME ( ATIMESTAMP IN TIMESTAMP )
    RETURN VARCHAR2
IS
    EXCEL_BASE_DATE_TIME CONSTANT TIMESTAMP
            := TO_TIMESTAMP ( '12/31/1899',
                           'mm/dd/yyyy' ) ;

    DIF CONSTANT INTERVAL DAY ( 9 ) TO SECOND ( 9 )
            := ATIMESTAMP
               - EXCEL_BASE_DATE_TIME ;
    DAYS CONSTANT INTEGER := EXTRACT ( DAY FROM DIF );
BEGIN
    RETURN CASE
              WHEN DIF IS NULL
              THEN
                  ''
              ELSE
                  TO_CHAR (  DAYS
                         + CASE
                               WHEN DAYS >= 60
                               THEN
                                   1
                               ELSE
                                   0
                           END
                         + ROUND ( ( EXTRACT ( HOUR FROM DIF )
                                  + ( EXTRACT ( MINUTE FROM DIF )
                                    + EXTRACT ( SECOND FROM DIF )
                                      / 60 )
                                    / 60 )
                                 / 24,
                                 4 ) )
          END;
END;

オプション 2:

Excel 関数は=TEXT(B2,"MM/DD/YY")、B2 に保存されている Excel の日付値を変換するためのものです。次に、Oracleでテスト文字を使用してみてください

1900 年 1 月 1 日を開始日と考えると、

SELECT
      TO_CHAR ( TO_DATE ( '1900-01-01',
                      'YYYY-MM-DD' )
              + 41293,
              'DD/MON/YYYY' )
FROM
      DUAL
于 2013-10-16T08:56:58.673 に答える