为啥 APEX 和 Oracle SQL Developer 中的日期格式不同?

Posted

技术标签:

【中文标题】为啥 APEX 和 Oracle SQL Developer 中的日期格式不同?【英文标题】:Why date formats are different in APEX and Oracle SQL Developer?为什么 APEX 和 Oracle SQL Developer 中的日期格式不同? 【发布时间】:2019-07-12 05:52:57 【问题描述】:

Oracle SQL Developer 中的日期格式类似于DD-MON-YY

例如17-OCT-03

APEX 中的日期格式类似于 MM/DD/YYYY

例如12/17/1980

它们为什么不同?

这可能会导致同一 SQL 查询无法在两个应用程序上运行。

我知道使用 TO_DATE 和 TO_CHAR 函数可以避免此类问题,但我想了解此问题背后的逻辑。

每个应用程序都使用自己的默认日期格式吗?

【问题讨论】:

【参考方案1】:

是的,每个应用程序都有自己的日期格式。

甚至每个应用程序都可以有多个会话,每个会话都为 DATE 和 TIMESTAMP 指定不同的会话格式。

SQL Developer 在首选项、数据库、NLS 页面中定义了它的应用程序级别设置。这就是 DATE 的显示方式,除非您在 SQL 工作表中发出 ALTER SESSION SET...。

或者,如果您始终需要特定格式而不考虑此设置,请将其构建到您的查询中。

select to_char(sysdate, 'DAY') today from dual;

【讨论】:

我认为每个会话都有自己的日期格式更公平。您的 SQL Developer 设置可能与我的 SQL Developer 设置不同,我可能有多个 SQL Developer 会话,每个会话具有不同的 NLS 设置,并且同一个 APEX 应用程序可能同时具有不同的会话具有不同的设置。 嗯,SQLDev 有一个 NLS 应用程序设置...您可以在会话级别覆盖它...但是是的。每个应用程序都有自己的会话和自己的 NLS 设置 我已经处理了很多案例,人们声称“这个脚本在应用程序 A 中工作,而不是在应用程序 B 中工作”在其他人使用应用程序 A 时失败时会感到非常困惑,因为那些人类已经以不同的方式设置了他们的 NLS 设置。这并不是说它在 SQL Developer 中工作,而是它在使用 Jeff Smith 的设置的 SQL Developer 中工作,而不是使用我的设置在 SQL Developer 中工作。当一个应用程序允许不同用户以不同方式配置其 NLS 设置时,强调它是会话级设置而不是应用程序级设置会有所帮助。 好的,但是应用程序决定了会话级别设置...除非用户自己覆盖了它,并且这是他们已经知道的。

以上是关于为啥 APEX 和 Oracle SQL Developer 中的日期格式不同?的主要内容,如果未能解决你的问题,请参考以下文章

SQL Plus 和 www.apex.oracle.com

Apex Oracle 中的 SQL 多对多查询

如何仅使用 sql 在 apex oracle 的交互式网格中实现选择列表以及 oracle APEX 中可用的内容?

oracle数据库11g和18c有啥区别? oracle sql developer和oracle apex与这些有啥关系?

PL/SQL 中的问题 = 错误堆栈:ORA-01403:Oracle Application Express (APEX) 中没有数据

如何从 Windows 批处理执行驻留在 Oracle APEX 上的 SQL 脚本