将字符串转换为日期不会以特定格式返回日期

问题描述:

我正在使用Oracle。正如你可以从标题明白,问题是在此代码:将字符串转换为日期不会以特定格式返回日期

select TO_DATE('21991231', 'YYYYMMDD') from dual; 

,其结果是:

31/12/2199 

我想要实现这样的结果:为什么

21991231 

甲骨文这样做?如何逃避这个问题?

+2

您需要使用'TO_CHAR(date,'YYYYMMDD');' –

+0

@Asjon,这不是['to_date'](http://docs.oracle.com/database/121/SQLRF/functions219 .htm)。 –

+3

如果它已经是你想要的格式,你为什么要转换它?你必须将你的字符串转换为一个日期(没有内部格式!),然后返回到你想要的格式的字符串,这似乎有点无意义? –

该日期在Oracle中没有格式。这是你的客户。 如果要修改当前会话的默认格式,您可以使用:

alter session set nls_date_format='yyyymmdd' 

如果你想将日期转换为临时基础上的格式,你可以使用TO_CHAR与格式字符串:

select to_char(date_col, 'yyyymmdd') from table;