[英]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.