Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle TO_DATE само с въвеждане на време ще добави компонент за дата въз основа на каква логика?

Стойност на тип данни за дата винаги има компоненти за дата и час. ако посочите само времева част от стойността за дата и час, както сте направили, частта от датата по подразбиране е първия ден от текущия месец.

Ето едно от местата (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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 12c Адаптивни планове в SQL Developer

  2. 2 начина за връщане на редове, които съдържат само буквено-цифрови знаци в Oracle

  3. Как да коригирам „Методът „get_Info“ в тип „Oracle.EntityFrameworkCore няма реализация.“

  4. Полето във файла с данни надвишава максималната дължина - грешка

  5. Oracle като решение за мутиращи таблици