我已经搜索过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')
但是我需要select来返回日期格式(MM/DD/YYYY HH24:MI:SS
),而不是字符串。我怎么能这样做?
修改 实际输出:
22.06.2010 00:00:00
所需输出(日期格式):
06/22/2010 00:00:00
答案 0 :(得分: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,那么您使用的任何工具都将执行类似操作,并且可能有不同的方式来指定显示的日期格式。
答案 1 :(得分:3)
日期是一个时间点,它没有格式(如数字:它们没有格式)。当您显示日期时,显然必须获得一种格式:如果您没有专门为Oracle提供格式,将使用会话的默认格式(会话参数NLS_DATE_FORMAT)。
结果:使用DATE数据类型进行日期算术和存储(无格式)。当您需要显示日期时(在报告或GUI中),请使用to_char
功能或等效功能。