我想将表的数据类型保留为日期,但我希望我的表在同一列中显示日期和时间格式



我想将表的数据类型保留为date但我希望我的表在同一列中显示日期和时间。

这就是我目前所拥有的。如何更改格式?我使用Oracle SQL。

insert into student 
values 
(001, 
to_date('2018-02-02 21:05:18', 'YYYY-MM-DD HH24:MI:SS'), 
'Oriel Road Brisbane', 
103, 
2486675, 
760024, 
'fdg57690gmig'
);

您不必执行任何操作;该列已包含日期和时间。它是应该根据需要显示它的前端。以下是一些示例:

SQL> create table test (datum date);
Table created.
SQL> insert into test (datum) values (to_date('2018-02-02 21:05:18', 'YYYY-MM-DD HH24:MI:SS'));
1 row created.
SQL> select * from test;
DATUM
--------
02.02.18
SQL> select to_char(datum, 'hh24:mi:ss') only_time,
2    to_char(datum, 'dd-mon-yy') date_format_1,
3    to_char(datum, 'yyyy-mm-dd hh24:mi:ss') date_and_time
4  from test;
ONLY_TIM DATE_FORMAT_1      DATE_AND_TIME
-------- ------------------ -------------------
21:05:18 02-vel-18          2018-02-02 21:05:18
SQL>

这意味着:如果您使用SELECT语句,请使用具有适当格式掩码的TO_CHAR。如果是关于例如Oracle Apex,表单或报告,请修改项目的格式掩码。

或者,您可以与 DBA 联系以更改整个数据库的 NLS 设置,或者您可以为会话执行此操作:

SQL> alter session set nls_date_format = 'dd.mm.yyyy hh24:mi:ss';
Session altered.
SQL> select datum from test;
DATUM
-------------------
02.02.2018 21:05:18

Oracle的DATE数据类型确实存储日期和时间 - Oracle 中没有仅日期数据类型,不像其他一些数据库,例如 MySQL,具有DATEDATETIME数据类型。

代码在表中正确插入日期/时间值。

当 Oracle 显示日期时,默认情况下使用参数NLS_DATE_FORMAT定义的格式(对于您的数据库,这可能不包括时间部分(。

您可以在会话级别更改设置:

alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss';

或者,您可以在日期列上使用to_char()

select to_char(mydatecol, 'yyyy-mm-dd hh24:mi:ss') as mydatestring
from mytable

最新更新