0

我浏览了 SO 网站,认为这很明显,但可惜我还没有找到。基本上设置如下:

我在表中有一个字符串,如下所示:

2010 年 6 月 22 日 00:00:00

我对其进行了选择:

SELECT To_Date(item, 'MM/DD/YYYY HH24:MI:SS') from that_table

所以我正在有效地做

SELECT To_Date('06/22/2010 00:00:00', 'MM/DD/YYYY HH24:MI:SS') from that_table

我的数据库返回:

22.06.2010 00:00:00

现在我知道我可以做一个

to_char(to_Date('06/22/2010 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 'MM/DD/YYYY HH24:MI:SS')

但我需要选择返回日期格式(MM/DD/YYYY HH24:MI:SS),而不是字符串。我怎样才能做到这一点?

编辑: 实际输出:

22.06.2010 00:00:00

所需的输出(日期格式):

2010 年 6 月 22 日 00:00:00

4

2 回答 2

5

DATE 没有格式,仅在转换为字符串以供显示时才进行格式化。如果您使用的是 SQL Plus,那么当您显示 DATE 列时(不使用 TO_CHAR 显式格式化它),SQL Plus 本身使用 NLS_DATE_FORMAT 设置执行 TO_CHAR 转换:

SQL> select sysdate from dual;

SYSDATE
---------
23-JUN-10

SQL> alter session set nls_date_format = 'YYYY-MM-DD HH24:MI:SS';

Session altered.

SQL> select sysdate from dual;

SYSDATE
-------------------
2010-06-23 15:17:12

如果您不使用 SQL Plus,那么您使用的任何工具都会做类似的事情,并且可能有不同的方式来指定显示的日期格式。

于 2010-06-23T14:18:08.807 回答
3

日期是一个时间点,它没有格式(如数字:它们没有格式)。当您显示日期时,显然它必须得到一个格式:如果您没有专门给 Oracle 一个格式,将使用您会话的默认格式(会话参数 NLS_DATE_FORMAT)。

结果:使用 DATE 数据类型进行日期算术和存储(无格式)。to_char当您需要显示日期(在报告中或 GUI 中)时,请使用该功能或​​等效的东西。

于 2010-06-23T14:17:42.247 回答