sql >> Database teknologi >  >> RDS >> Oracle

Oracle TO_DATE med kun tidsinput tilføjer datokomponent baseret på hvilken logik?

En værdi af datodatatypen har altid dato- og tidskomponenter. hvis du kun angiver tidsdelen af ​​datetime-værdien, som du gjorde, vil datodelen som standard være den første dag i den aktuelle måned.

Her er et af stederne (7. afsnit) i Oracle-dokumentationen, hvor denne adfærd er dokumenteret.

Der er også udokumenteret TIME literal og TIME datatype (skal aktiveres via 10407 (datetime TIME datatype creation) hændelse), hvis du skal bruge og gemme kun tid, uden datodel.

Her er en lille demonstration af brugen af ​​time literal og time datatype. Men igen er det en udokumenteret og ikke-understøttet funktion.

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

res 
------------------------  
11.32.00.000000000 AM      

Du kan bruge time literal uden at aktivere 10407 hændelse, men for at kunne definere en kolonne med time dataindtast 10407 begivenhed skal aktiveres:

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.

Nu kan vi oprette en tabel med en kolonne med time datatype:

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. hvordan man opretter db mysql med sqlalchemy

  2. SqlAlchemy TIMESTAMP 'ved opdatering' ekstra

  3. SQL Server Process Queue Race Condition

  4. Hvordan returnerer man et array fra Java til PL/SQL?