我的表格中有一个varchar
字段,其中包含一个日期,格式为:Dic 31 1999 12:00AM
,使用to_date
配置'Mon DD YYYY HH:MIAM'
时,通常可以毫无问题地进行转换
月份名称当然可以使用任何语言。例如,1月份,英语为Jan
,西班牙语为Ene
。
我认为Oracle客户端会选择机器的语言环境来确定哪个是传入字符串的语言。唯一的问题是,如果您是一个无法确切知道日期来自哪里的服务器,这将不会一直有效。
我目前的问题是,每次我使用西班牙语设置计算机并尝试使用英文命名月份来处理日期时,我都会收到“无效月份”错误。
我是否可以通过执行时间告诉Oracle,这是我发送的语言?
目前丑陋的解决方法是将不匹配的月份翻译成西班牙语。
答案 0 :(得分:5)
您可以使用SELECT * FROM NLS_SESSION_PARAMETERS
来确定当前的语言设置(同时存在NLS_INSTANCE_PARAMETERS
和NLS_DATABASE_PARAMETERS
)。
在工作站上使用NLS_*
环境变量或在SQL会话中使用ALTER SESSION
语句来更改这些语言设置。
答案 1 :(得分:3)
你应该使用NLS_DATE_LANGUAGE:
select to_char(sysdate, 'dd Month, Day', 'NLS_DATE_LANGUAGE = turkish') from dual
答案 2 :(得分:0)
ALTER SESSION可能有效。我不记得具体如何,但我知道你可以用它设置语言环境,日期样式和数字格式。