sql >> Databáze >  >> RDS >> Oracle

Oracle TO_DATE s pouze časovým vstupem přidá komponentu data na základě jaké logiky?

Hodnota datového typu datum má vždy komponenty data a času. pokud zadáte pouze časovou část hodnoty datetime, jak jste to udělali, část data se jako výchozí použije na první den aktuálního měsíce.

Zde je jedno z míst (7. odstavec) v dokumentaci Oracle, kde je toto chování zdokumentováno.

Existuje také nezdokumentovaný TIME doslovný a TIME datový typ (je třeba povolit prostřednictvím 10407 (datetime TIME vytvoření datového typu) událost), pokud potřebujete použít a uložit pouze čas, bez části data.

Zde je malá ukázka použití time doslovný a time datový typ. Ale opět je to nezdokumentovaná a nepodporovaná funkce.

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

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

Časový literál můžete použít bez povolení 10407 událost, ale aby bylo možné definovat sloupec time datový typ 10407 událost musí být povolena:

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.

Nyní můžeme vytvořit tabulku se sloupcem time datový typ:

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. ER_ACCESS_DENIED_ERROR:Když se pokusím připojit k databázi na vzdáleném serveru - Node.js

  2. Jak najít řádky, které jsou duplikáty podle klíče, ale nejsou duplicitní ve všech sloupcích?

  3. SQL Server neaktualizuje záznamy

  4. Na jakou hodnotu by měla být nastavena vlastnost providerName při ukládání připojovacího řetězce MySQL do App.config?