我必须用希伯来语(一个月的名字)输入用户输入并将其转换为英文月份名称。有没有办法在没有查找表的情况下转换它(可能使用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
答案 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的快速扫描,似乎可以合理地说希伯来日历的运行方式与格里高利历不同。例子包括:
如果您想在希伯来语和格里高利月名之间进行转换,您首先需要将希伯来语日期转换为格里高利日期,然后确定格里高利月。
谷歌搜索“从希伯来日期转换为格里高利日期”会产生大量用于在这些日历之间进行转换的工具。
这是一个可以应用hebcal
的sourceforge项目