如何通过 Toad 更改日期格式的默认 NLS 参数?

How do I change the default NLS parameters for date format through Toad?

我的 NLS 日期格式为 DD-MON-RR。当我想将其更改为 YYYY 时,这为我提供了 YY 的基础日期格式。我尝试使用以下查询并成功 运行

DECLARE
       v_date DATE := sysdate;
BEGIN
       DBMS_OUTPUT.put_line(TO_CHAR(v_date, 'MM/DD/YYYY'));
END;

但这并没有改变默认格式。

在某些情况下,我正在尝试将数据从 Oracle 导入到 Tableau。不幸的是,当我尝试从 Tableau 服务器导出交叉表时,它会查看基础数据而不是视图上的内容。这导致我在 excel 中将日期 25-Jun-2017 更改为 25-Jun-17。

我能够理解的唯一解决方法是更改​​ underlying/source 数据的默认格式,在本例中为 Oracle DB。

我正在使用 TOAD 并试图了解如何将其更改为可能的 DD/MON/RRRR 格式或年份列中带有 4 位数字的类似格式。

也欢迎任何解决方法

alter session set nls_date_format='DD/MON/RRRR' 在应用程序中以编程方式或

CREATE OR REPLACE TRIGGER trg_after_logon AFTER LOGON ON DATABASE
BEGIN
   execute immediate 'alter session set NLS_DATE_FORMAT=''DD/MON/RRRR''';
END;

在系统或 sys 架构中。

或者,您可以使用

alter system set NLS_DATE_FORMAT='DD/MON/RRRR' scope = both

前提是您再次进入 system 或 sys。

使用最合理的方法管理您的日期格式屏蔽

首先,我同意 Alex 关于使用 to_char 的观点。这将是我根据特定要求修改日期掩码的首选。

在 Toad 中,您可以根据需要调用 alter session 命令:

ALTER SESSION SET nls_date_format='DD/MON/RRRR';

如果您偏爱特定的日期格式掩码(并且您发现自己经常发出命令 ALTER SESSION SET NLS...),那么您可能需要考虑更改您的用户登录设置。

如果您只是修改特定的用户首选项登录文件 login.sql(请参阅 here),您的会话将遵循您在会话开始时选择的日期格式掩码。我偏爱创建环境变量 SQLPATH,并将我的登录脚本放在那里。

Toad 将遵循您的 login.sql 文件设置(例如,请参阅此 post)。

由于这是由特定要求或个人喜好驱动的,所以我绝不会考虑在站点级别修改它。

正如其他答案中已经给出的,您可以通过 ALTER SESSION 设置 NLS_DATE_FORMAT

为了仅为您的本地 PC 设置它,请打开注册表编辑器并导航至 HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_%ORACLE_HOME_NAME%,resp。 HKLM\SOFTWARE\ORACLE\KEY_%ORACLE_HOME_NAME%.

在那里你可以添加一个字符串值NLS_DATE_FORMAT,例如:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraClient11g_home1]
"NLS_TIMESTAMP_FORMAT"="YYYY-MM-DD HH24:MI:SSfmXFF3"
"NLS_TIMESTAMP_TZ_FORMAT"="YYYY-MM-DD HH24:MI:SSfmXFF3 fmTZH:TZM"
"NLS_DATE_FORMAT"="YYYY-MM-DD HH24:MI:SS"

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE\KEY_OraClient11g_home1]
"NLS_TIMESTAMP_FORMAT"="YYYY-MM-DD HH24:MI:SSfmXFF3"
"NLS_TIMESTAMP_TZ_FORMAT"="YYYY-MM-DD HH24:MI:SSfmXFF3 fmTZH:TZM"
"NLS_DATE_FORMAT"="YYYY-MM-DD HH24:MI:SS"

您还可以在 Windows 设置中将 NLS_DATE_FORMAT 设置为环境变量。