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

Sql 将字符串转换为日期不会以特定格式返回日期,sql,oracle,Sql,Oracle,我在研究甲骨文。正如您从标题中所理解的,问题在于以下代码: select TO_DATE( '21991231', 'YYYYMMDD' ) from dual; 结果是: 31/12/2199 我想达到这个结果: 21991231 甲骨文为什么要这样做?如何避免这个问题?日期在Oracle中没有格式。是你的客户。 如果要在当前会话中修改默认格式,可以使用: alter session set nls_date_format='yyyymmdd' 如果要临时将日期转换为格式,可以使用to

我在研究甲骨文。正如您从标题中所理解的,问题在于以下代码:

select TO_DATE( '21991231', 'YYYYMMDD' ) from dual;
结果是:

31/12/2199
我想达到这个结果:

21991231

甲骨文为什么要这样做?如何避免这个问题?

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

alter session set nls_date_format='yyyymmdd'
如果要临时将日期转换为格式,可以使用to_char with format string:

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

您需要使用
从dual中读取字符(日期,'YYYYMMDD')
@Asjon,那不是你想要的。如果它已经是你想要的格式,你为什么还要转换它呢?您必须将字符串转换为日期(没有内在格式!),然后再转换为所需格式的字符串,这似乎有点毫无意义?