Oracle日期格式:varchar依次为date,char和date

时间:2019-01-19 04:17:43

标签: sql oracle date

我有一个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

2 个答案:

答案 0 :(得分:5)

在Oracle中,DATE值没有特定格式,例如DD-MON-YYYYDD/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';