我有一个日期07-OCT-2017,我必须在oracle中将其转换为20171007。
Below code doesn't work for me
select To_date(to_char('07-OCT-2017','DD-MMM-YYYY'), 'yyyymmdd') from dual;
答案 0 :(得分:1)
你的硬币太多糖了。
select to_char( to_date( '07-JUL-2017',
'DD-MON-YYYY',
'NLS_DATE_LANGUAGE = American'),
'YYYYMMDD') from dual;
产量
TO_CHAR(
--------
20170707
修复细节。请编辑您的问题以匹配您提供的数据。 不过,希望这会有所帮助。
答案 1 :(得分:0)
我有一个日期07-OCT-2017,我必须在oracle中将其转换为20171007。
日期(存储在表格中)由7 bytes表示 - 它们没有与之关联的任何格式。如果它们被格式化为字符串,那么这是您用来访问数据库的客户端程序,它将自己的格式应用于日期(通常可以通过该程序中的首选项设置)。
因此,您可以使用日期文字来获取日期:
SELECT DATE '2017-10-07' FROM DUAL;
或使用TO_DATE
:
SELECT TO_DATE( '07-OCT'2017', 'DD-MON-YYYY', 'NLS_DATE_LANGUAGE=English' )
FROM DUAL;
但是,您正在使用的客户端程序会将这些7字节转换为您,用户可以使用其默认日期格式来理解的内容。您可以在以下位置更改此默认格式:
如果您不想更改默认值或需要以其他用户的格式显示默认值,则需要使用TO_CHAR
将日期(内部7字节,无格式)转换为格式化字符串:
SELECT TO_CHAR( DATE '2017-10-07', 'YYYYMMDD' ) FROM DUAL;
或
SELECT TO_CHAR(
TO_DATE( '07-OCT'2017', 'DD-MON-YYYY', 'NLS_DATE_LANGUAGE=English' ),
'YYYYMMDD'
)
FROM DUAL;