我有一个varchar值'20-OCT-2019'
,我想在日期列中以'10/20/2019'
格式加载相同的值。
我在下面尝试过,但是没有给出预期的输出。
select to_date(to_char(to_date('20-OCT-2019','DD-MON-YYYY'),'MM/DD/YYYY'),'MM/DD/YYYY')
from dual
答案 0 :(得分:5)
在Oracle中,DATE值没有特定格式,例如DD-MON-YYYY
或DD/MM/RR
等。所有DATE字段都包含世纪,年,月,日,小时,分钟的子字段。和秒,这意味着Oracle中的所有DATE字段实际上都是时间戳值,精度为一秒。 Oracle will by default convert a DATE to a character string using the DD-MON-YY
format,但这只是默认格式-并不意味着日期以DD-MON-RR
格式存储。
答案 1 :(得分:1)
您无法将字符串数据加载到字符串列中。因此,最外面的to_date
转换是没有意义的,但是如果要以所需的格式显示,则需要在下面进行此类转换:
select to_char(
to_date('20-OCT-2019','DD-MON-YYYY','NLS_DATE_LANGUAGE=ENGLISH')
,'MM/DD/YYYY')
as "Appearance in New Format"
from dual;
Appearance in New Format
10/20/2019
不要忘记针对您的英语以外的其他本地语言设置使用NLS_DATE_LANGUAGE
选项(在这种情况下,OCT: October is an abbreviation in English Language
)
P.S。实际上,您并没有像@Bob Jarvis所指出的那样以某种格式保存日期列,但是日期列的显示取决于您的nls_date_format
设置,例如此示例的设置:
alter session set nls_date_format = 'DD-MON-YYYY HH24:MI:SS';