在Oracle中使用日期月份名称语言?

fil*_*ppo 3 string oracle datetime

我的varchar表格中有一个字段,其中包含一个日期,格式为:Dic 31 1999 12:00AM,通常可以使用to_dateconfigure 进行转换而不会出现任何问题'Mon DD YYYY HH:MIAM'

当然,月份名称可以使用任何语言。例如,一月将使用Jan英语和Ene西班牙语。

我认为Oracle客户端将选择计算机的语言环境来确定输入字符串的语言。唯一的问题是,如果您是一台真正无法确定日期从何而来的服务器,那么这将永远无法正常工作。

我当前的问题是,每当我使用西班牙语设置的计算机并尝试使用英文名称“ months”处理日期时,都会收到“无效的月份”错误。

我有什么办法可以在执行时告诉Oracle,我使用的是哪种语言?

当前的丑陋解决方法是将不匹配的月份翻译成西班牙语。

cem*_*cem 11

您应该为此使用 NLS_DATE_LANGUAGE:

select to_char(sysdate, 'dd Month, Day', 'NLS_DATE_LANGUAGE = turkish') from dual
Run Code Online (Sandbox Code Playgroud)

  • 很简单,您可以在不改变会话的情况下做到这一点。甚至比国际海事组织接受的答案更好。 (3认同)

arn*_*nep 5

您可以使用SELECT * FROM NLS_SESSION_PARAMETERS,以确定您当前语言设置(也NLS_INSTANCE_PARAMETERSNLS_DATABASE_PARAMETERS存在)。

使用NLS_*工作站上的环境变量或ALTER SESSIONSQL会话中的语句来更改这些语言设置。