0

我必须在希伯来语(月份名称)中获取用户输入并将其转换为英文月份名称。有没有办法在没有查找表的情况下转换它(可能使用 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
4

2 回答 2

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
于 2011-01-27T13:31:51.687 回答
0

根据对维基百科文章的快速浏览:希伯来历,可以说希伯来历的运作方式与公历不同,这似乎是合理的。示例包括:

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

如果要在希伯来语和公历月份名称之间进行转换,首先需要将希伯来日期转换为公历日期,然后确定公历月份。

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

这是一个可以应用hebcal的 sourceforge 项目

于 2011-01-27T13:59:09.987 回答