Giá trị của kiểu dữ liệu ngày luôn có các thành phần ngày và giờ. nếu bạn chỉ chỉ định phần thời gian của giá trị ngày giờ như bạn đã làm, phần ngày mặc định là ngày đầu tiên của tháng hiện tại.
Đây là một trong những địa điểm (đoạn thứ 7) trong tài liệu Oracle ghi lại hành vi này.
Cũng có TIME
không có giấy tờ chữ và TIME
kiểu dữ liệu (cần được bật qua 10407
(tạo kiểu dữ liệu datetime TIME)) nếu bạn cần sử dụng và lưu trữ chỉ thời gian, không có phần ngày tháng.
Đây là một minh chứng nhỏ về việc sử dụng time
chữ và time
loại dữ liệu. Nhưng một lần nữa, đó là tính năng không có giấy tờ và không được hỗ trợ.
SQL> select time '11:32:00' as res
2 from dual;
res
------------------------
11.32.00.000000000 AM
Bạn có thể sử dụng ký tự thời gian mà không cần bật 10407
sự kiện, nhưng để có thể xác định một cột time
nhập dữ liệu 10407
sự kiện cần được bật:
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.
Bây giờ chúng ta có thể tạo một bảng với cột time
kiểu dữ liệu:
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.