繁体   English   中英

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

[英]Oracle date format:varchar to date then char and then date

我有一个varchar值'20-OCT-2019'我想在日期列中以'10/20/2019' '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

在Oracle中,DATE值没有特定格式,例如DD-MON-YYYYDD/MM/RR等。所有DATE字段都包含世纪,年,月,日,小时,分钟和秒的子字段。 ,这意味着Oracle中的所有DATE字段实际上都是时间戳值,精度为一秒。 Oracle默认情况下会使用DD-MON-YY格式将DATE转换为字符串 ,但这只是默认格式-这并不意味着日期以DD-MON-RR格式存储。

您不能在字符串列中加载字符串数据。 因此,最外层的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针对英语以外的其他不同本地语言设置使用NLS_DATE_LANGUAGE选项(在这种情况下, OCT: October is an abbreviation in English Language

PS实际上,您并没有像@Bob Jarvis所指出的那样以某种格式保存日期列,但它们显示为取决于您的nls_date_format设置,例如此示例的设置:

alter session set nls_date_format = 'DD-MON-YYYY HH24:MI:SS';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM