【问题标题】:Date conversion in Oracle not working as expectedOracle 中的日期转换未按预期工作
【发布时间】:2014-07-11 18:39:19
【问题描述】:

ORACLE 10 g db:从

转换日期格式
 02-JUL-14 
    to 
 02/JUL/14 

我尝试使用下面的选择查询来获取“02/JUL/14”而不是显示“02-JUL-14”:

SELECT ROUTINGNUM , to_date (EFFDATE,'DD/MM/YYYY')  FROM hat;

谁能帮忙看看这篇。

【问题讨论】:

  • 也许它可以工作,并且您的环境设置不正确,无法按照您的意愿显示。也许尝试将其转换为文本可以让您查看从 TO_DATE() 输出实际转换的内容。另外,也许你应该看看你的数据库参数,看看你是如何设置的。

标签: sql oracle date


【解决方案1】:

如果 EFFDATE 是日期列,

SELECT ROUTINGNUM , to_char( EFFDATE,'DD/MON/YYYY')  FROM hat;

如果是 DD-MON-YY 格式的字符串

SELECT ROUTINGNUM , to_char( to_date( EFFDATE,'DD-MON-YY') ,'DD/MON/YYYY')  
FROM hat;

【讨论】:

    【解决方案2】:

    TO_DATE 函数用于将 String 类型转换为 Date 类型。请改用 TO_CHAR 函数。

    【讨论】:

      【解决方案3】:

      如果您的 EFFDATE 字段已经是日期类型,那么您只需更改 NLS_DATE_FORMAT。

      alter session set NLS_DATE_FORMAT = 'DD/MM/YYYY';
      select eff_date from hat;
      

      或者在 EFFDATE 上使用 TO_CHAR

      select to_char(eff_date, 'DD/MM/YYYY') from hat;
      

      如果您通常处理特定格式的日期,则可以通过设置一个或多个 NLS 初始化参数来更改您的实例的默认值。

      sqlplus / as sysdba
      show parameter nls
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-08-06
        • 1970-01-01
        • 2016-11-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多