【问题标题】: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 函数可以避免此类问题,但我想了解此问题背后的逻辑。

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

【问题讨论】:

    标签: sql oracle oracle-sqldeveloper oracle-apex


    【解决方案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 设置时,强调它是会话级设置而不是应用程序级设置会有所帮助。
    • 好的,但是应用程序决定了会话级别设置...除非用户自己覆盖了它,并且这是他们已经知道的。
    猜你喜欢
    • 1970-01-01
    • 2013-11-13
    • 1970-01-01
    • 2021-04-09
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 2012-04-01
    • 1970-01-01
    相关资源
    最近更新 更多