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

为什么APEX和Oracle SQL Developer中的日期格式不同?,sql,oracle,oracle-sqldeveloper,oracle-apex,Sql,Oracle,Oracle Sqldeveloper,Oracle Apex,Oracle SQL Developer中的日期格式类似于DD-MON-YY 例如2003年10月17日 APEX中的日期格式类似于MM/DD/YYYY 例如12/17/1980 为什么它们不同 这可能会导致同一个SQL查询无法在两个应用程序上运行 我知道我可以通过使用TO_DATE和TO_CHAR函数来避免这种问题,但我想了解这个问题背后的逻辑 每个应用程序都使用自己的默认日期格式吗?是的,每个应用程序都有自己的日期格式 甚至每个应用程序都可以有多个会话,每个会话都具有为日期和时间戳指定的不同

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

例如
2003年10月17日

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

例如
12/17/1980

为什么它们不同

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

我知道我可以通过使用TO_DATE和TO_CHAR函数来避免这种问题,但我想了解这个问题背后的逻辑


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

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

甚至每个应用程序都可以有多个会话,每个会话都具有为日期和时间戳指定的不同会话格式

SQL Developer在首选项、数据库、NLS页面中定义了其应用程序级设置。这是日期的显示方式,除非您发出ALTER SESSION集合。。。在SQL工作表中

或者,无论此设置如何,如果始终需要特定格式,请将其构建到查询中

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中工作,而是它可以在SQL Developer中使用Jeff Smith的设置,而不是在SQL Developer中使用我的设置。强调这是会话级别设置,而不是应用程序级别设置,在一个应用程序允许不同用户以不同方式配置其NLS设置时会有所帮助。好的,但应用程序会确定会话级别设置…除非用户自己已经覆盖了该设置,而这是他们已经知道的。