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

時間入力のみのOracleTO_DATEは、どのロジックに基づいて日付コンポーネントを追加しますか?

    日付データ型の値には、常に日付と時刻のコンポーネントがあります。日時値の時間部分のみを指定した場合、日付部分はデフォルトで当月の初日になります。

    ここに場所の1つがあります(7番目の段落) この動作が文書化されているOracleの文書にあります。

    文書化されていないTIMEもあります リテラルとTIME データ型(10407を介して有効にする必要があります (datetime TIMEデータ型の作成)イベント)日付部分なしで時間だけを使用して保存する必要がある場合。

    これはtimeの使用の小さなデモンストレーションです リテラルとtime データ・タイプ。しかし、これも文書化されておらず、サポートされていない機能です。

    SQL> select time '11:32:00' as res
      2    from dual;
    
    res 
    ------------------------  
    11.32.00.000000000 AM      
    

    10407を有効にせずに時間リテラルを使用できます イベントですが、timeの列を定義できるようにするためです データ型10407 イベントを有効にする必要があります:

    SQL> create table time_table(time_col time);
    create table time_table(time_col time)
                                     *
    ERROR at line 1:
    ORA-00902: invalid datatype   
    
    -- enable 10407 event 
    SQL> alter session set events '10407 trace name context forever, level 1';
    
    Session altered.
    

    これで、timeの列を持つテーブルを作成できます。 データ型:

    SQL> create table time_table(time_col time);
    
    Table created.
    
    
    SQL> insert into time_table(time_col)
      2    values(time '11:34:00');
    
    1 row created.
    
    SQL> select * from time_table;
    
    TIME_COL 
    --------------- 
    11.34.00 AM
    
    SQL> alter session set events '10407 trace name context off';
    
    Session altered.
    



    1. MysqlでEntityManagerJPAを使用してスクリプトを実行する

    2. ドッキングされたPostgreSQLデータベースのバックアップ/復元

    3. MySQL RAND()関数–MySQLでランダムな数値を生成します

    4. PostgreSQLインストールのバイナリ形式でpg_repack拡張機能をコンパイルする