在Oracle中将希伯来语月份名称转换为英语月份名称

时间:2011-01-27 13:08:44

标签: oracle hebrew

我必须用希伯来语(一个月的名字)输入用户输入并将其转换为英文月份名称。有没有办法在没有查找表的情况下转换它(可能使用to_date和to_char)?

更新 - 根据挪威语的建议,我做了这个测试,显示希伯来语的短名称超过三个字符! (我只能在这个函数中处理三个字符串)

with d as
(
select to_date('01' || lpad(rownum,2,'0') || '2011','DDMMYYYY') d from
(
select 1 from dual connect by level <=12
)
)
select to_char(d.d,'MON','NLS_DATE_LANGUAGE=HEBREW') heb_mon,
to_char(d.d,'MONTH','NLS_DATE_LANGUAGE=AMERICAN') us_mon
from d;

哪个产生了这个数据

ינואר   JAN
פברואר  FEB
מרץ     MAR
אפריל   APR
מאי     MAY
יוני    JUN
יולי    JUL
אוגוסט  AUG
ספטמבר  SEP
אוקטובר OCT
נובמבר  NOV
דצמבר   DEC

2 个答案:

答案 0 :(得分:1)

这是我想到的第一件事。我不知道用希伯来语值来测试希伯来语,但这似乎与挪威语一起使用:

with test_norwegian as (
  select 'januar' month
  from dual
)
select 
to_char(
  to_date('1 '||test_norwegian.month||' 2011', 'dd month yyyy', 'NLS_DATE_LANGUAGE=NORWEGIAN')
  , 'month', 'NLS_DATE_LANGUAGE=NORWEGIAN') norwegian_month
,to_char(
  to_date('1 '||test_norwegian.month||' 2011', 'dd month yyyy', 'NLS_DATE_LANGUAGE=NORWEGIAN')
  , 'month', 'NLS_DATE_LANGUAGE=AMERICAN') american_month
from test_norwegian

答案 1 :(得分:0)

根据对Wikipedia Article: Hebrew calendar的快速扫描,似乎可以合理地说希伯来日历的运行方式与格里高利历不同。例子包括:

  • 公历5771年没有闰月。
  • 格里高利月是固定长度。由于它们是基于月球周期,因此并非所有希伯来月都是固定长度。

如果您想在希伯来语和格里高利月名之间进行转换,您首先需要将希伯来语日期转换为格里高利日期,然后确定格里高利月。

谷歌搜索“从希伯来日期转换为格里高利日期”会产生大量用于在这些日历之间进行转换的工具。

这是一个可以应用hebcal

的sourceforge项目