Oracle TO_DATE SQL格式化奇数行为
题
我已经拖了这个网站,认为这很明显,但是可惜我还没有找到一个。基本上设置如下:
我的表格中有一个字符串:
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
解决方案
日期是一个时间点,它没有格式(例如数字:它们没有格式)。显示日期时,显然必须获得格式:如果您不具体给Oracle作为格式,则会使用会话的默认格式(会话参数nls_date_format)。
结果:使用日期数据类型进行日期算术和存储(无格式)。使用 to_char
当您需要显示日期时(在报告或GUI中)时功能或等效的内容。
其他提示
日期没有格式,仅在用于显示目的的字符串转换为字符串时才格式化。如果您使用SQL Plus,则在显示日期列(不使用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,那么您使用的任何工具都会做类似的操作,并且可能有不同的方式来指定显示日期格式以进行显示。
不隶属于 StackOverflow