DATE数据类型看起来不错;它以 Oracle 的内部格式存储值,因此由您决定如何将它们显示给用户。例如:
插入:
SQL> create table flight (flight_date date);
Table created.
SQL> insert into flight (flight_date) values (sysdate);
1 row created.
SQL> insert into flight (flight_date) values (to_date('18.07.2021 16:58', 'dd.mm.yyyy hh24:Mi'));
1 row created.
选择(各种选项):
SQL> select * from flight;
FLIGHT_D
--------
18.07.21
18.07.21
SQL> select to_char(flight_date, 'dd-mon-yy hh:mi am', 'nls_date_language = english')) val from flight;
select to_char(flight_date, 'dd-mon-yy hh:mi am', 'nls_date_language = english')) val from flight
*
ERROR at line 1:
ORA-00923: FROM keyword not found where expected
SQL> select to_char(flight_date, 'dd-mon-yy hh:mi am', 'nls_date_language = english') val from flight;
VAL
---------------------------
18-jul-21 04:58 PM
18-jul-21 04:58 PM
SQL> select to_char(flight_date, 'dd/mm/yyyy hh24:mi:ss') val from flight;
VAL
-------------------
18/07/2021 16:58:36
18/07/2021 16:58:00
SQL> alter session set nls_Date_Format = 'yyyy-mm-dd hh:mi am';
Session altered.
SQL> select * from flight;
FLIGHT_DATE
-------------------
2021-07-18 04:58 PM
2021-07-18 04:58 PM
SQL>
两个DATE值之差是它们之间的天数,因此 - 如果您想将它们“转换”为小时,请将其乘以 24(因为一天有 24 小时):
SQL> select to_date('18.07.2021 17:02', 'dd.mm.yyyy hh24:mi') - to_date('18.07.2021 10:44', 'dd.mm.yyyy hh24:mi') diff
2 from dual;
DIFF
----------
,2625
SQL> select 0.2625 * 24 hours from dual;
HOURS
----------
6,3
SQL>