繁体   English   中英

Oracle to_date SQL格式化奇怪的行为

[英]Oracle to_date SQL formatting odd behavior

我已经搜寻过SO网站,认为这很明显,但是我还没有找到。 基本上,设置如下:

我在这样的表中有一个字符串:

06/22/2010 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

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

06/22/2010 00:00:00

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,那么您所使用的任何工具都会做类似的事情,并且可能以不同的方式指定显示日期的格式。

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

结果:将DATE数据类型用于日期算术和存储(无格式)。 需要显示日期时(在报告中或在GUI中),请使用to_char函数或等效函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM