【问题标题】:Oracle SQL Function return date formatOracle SQL 函数返回日期格式
【发布时间】:2013-11-27 14:34:37
【问题描述】:

我在 Oracle PL-SQL 上有一个小问题,

我创建了一个函数

最后看起来像这样:

 wynik := concat(miesiac,concat(dzien,rok));
 w_date := TO_DATE(wynik);
 return w_date;

它工作正常,但它以 MM/DD/YYYY 格式返回日期,我想以 DD MONTH YYYY 格式返回,我如何在不更改全局设置的情况下达到它?

我试着弄乱:

w_date := TO_DATE(wynik,'DD MONTH YYYY');

但它给了我错误....

感谢您的帮助。

【问题讨论】:

  • Oracle Date format 的可能重复项
  • 该函数根本不返回任何格式的日期——它返回一个明确的 DATE 数据类型。显示时,必须将其转换为人类可读的字符串,并且该显示格式是可配置的。

标签: oracle function date plsql date-format


【解决方案1】:
w_date := TO_CHAR(wynik,'DD MONTH YYYY');

【讨论】:

    【解决方案2】:

    在内部,DATE 存储为数字,而不是字符串,因此在创建变量,与 DATE 变量呈现给用户的方式有关。

    要将DATE 变量显示为字符串,应使用TO_CHAR 函数,并使用格式掩码:

    SELECT TO_CHAR(SYSDATE, 'DD MONTH YYYY') AS val FROM dual;
    
    值
    -------------------------------------------------- --
    14 LISTOPAD 2013 

    要抑制多余的空格,请使用fm 修饰符:

    SELECT TO_CHAR(SYSDATE, 'DD fmMONTH YYYY') AS val FROM dual;
    
    值
    -------------------------------------------------- --
    14 LISTOPAD 2013 

    【讨论】:

      【解决方案3】:

      TO_DATE 将字符串转换为日期,并使用为会话定义的默认日期格式呈现到输出。如果您想以不同的方式显示它,请使用TO_CHAR 函数或更改默认格式。

      TO_CHAR 用法示例:

      TO_CHAR(sysdate, 'DD MONTH YYYY')
      

      更改默认格式:

      ALTER SESSION SET NLS_DATE_FORMAT = 'DD MONTH YYYY';
      

      【讨论】:

      • 问题是这个函数的指导方针是返回日期变量,当然使用 TO_CHAR 它工作得很好,但我需要作为日期返回,如下面的代码所示。 CREATE OR REPLACE FUNCTION Pesel_dataur(p_pesel IN CHAR) return date 所以正确结果和正确格式的唯一选择是改变全局设置?
      • 所以返回w_date。问题是什么?您可以在 NLS_DATE_FORMAT 上返回日期和中继或返回字符串并提供自定义格式。我没有看到其他选项。
      • 而且没有合适的日期格式。尽管有 NLS_DATE_FORMAT,但整个日期都在内部存储。 NLS_DATE_FORMAT 仅用于在您选择时以可读方式显示 DATE 对象。
      猜你喜欢
      • 1970-01-01
      • 2015-03-15
      • 1970-01-01
      • 2019-12-13
      • 1970-01-01
      • 2022-12-02
      • 1970-01-01
      • 2021-12-29
      相关资源
      最近更新 更多