我不确定如何将“默认系统日期”设置为仅在运行时具有时间位?
因此,输出将是当前时间'15:20:52'而没有日期。
我正在使用sql plus。
创建表时,如下所示:
create table timeslot
(
tsdate default sysdate not null,
tstime default sysdate not null)
SQLPLUS
标签的意思是“ Oracle”。
由于Oracle不提供“时间”数据类型,因此您将使用单个列:
SQL> create table timeslot
2 (id number primary key,
3 ts date default sysdate not null
4 );
Table created.
SQL> insert into timeslot (id) values (1);
1 row created.
SQL>
我插入了什么?
SQL> select * From timeslot;
ID TS
---------- --------
1 03.06.20
SQL>
哦,男孩,这看起来很丑...无法知道它到底是什么,因为它可以
但这仅仅是因为我数据库上的当前NLS设置就date
这样显示了数据类型值。Oracle以7字节的二进制格式存储日期(人类无法识别我们的日期),因此我们必须做一些事情才能很好地呈现这些值。例如:
SQL> alter session set nls_date_format = 'dd.mm.yyyy';
Session altered.
SQL> select * From timeslot;
ID TS
---------- ----------
1 03.06.2020
好,这是日期,但是-时间在哪里?
SQL> alter session set nls_date_format = 'dd.mm.yyyy hh24:mi:ss';
Session altered.
SQL> select * From timeslot;
ID TS
---------- -------------------
1 03.06.2020 19:38:37
SQL>
当然,您不会alter session
每次都这样做。您将使用to_char
具有适当格式掩码的功能:
SQL> select id,
2 to_char(ts, 'dd.mm.yyyy hh24:mi:ss') ts
3 from timeslot;
ID TS
---------- -------------------
1 03.06.2020 19:38:37
SQL>
或者,当您想拆分日期和时间部分时,
SQL> select id,
2 to_char(ts, 'dd.mm.yyyy') c_date,
3 to_char(ts, 'hh24:mi:ss') c_time
4 from timeslot;
ID C_DATE C_TIME
---------- ---------- --------
1 03.06.2020 19:38:37
SQL>
或者,创建一个为您执行此操作的VIEW:
SQL> create or replace view v_timeslot as
2 select id,
3 to_char(ts, 'dd.mm.yyyy') c_date,
4 to_char(ts, 'hh24:mi:ss') c_time
5 from timeslot;
View created.
SQL> select * from v_timeslot;
ID C_DATE C_TIME
---------- ---------- --------
1 03.06.2020 19:38:37
SQL>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句