Firebird中的本地化月份名称

| 我需要获取TIMESTAMP字段的各个部分-特别是年份,本地化的月份名称(俄语),月份中的日期和小时间隔(例如\ '11-12 \')。 目前我想出了这个:
select
extract (year from prt.dtbegin) as f_year,
(
  case extract (month from prt.dtbegin)
    when 1 then \'Январь\'
    when 2 then \'Февраль\'
    /* ... */
    when 12 then \'Декабрь\'
  end
) as f_month,
cast (lpad (extract (day from prt.dtbegin), 2, 0) as char(2)) as f_day,
(
  cast (lpad (extract (hour from prt.dtbegin), 2, 0) as char(2)) 
  || \' - \'
  || cast (lpad (extract (hour from prt.dtbegin) + 1, 2, 0) as char(2)) 
) as f_hour
from prt
它工作正常(目前间隔为'23-24 \'是可以的),但我不喜欢它,尤其是每个月都有CASE语句。 因此,我想知道,在Firebird中是否有任何通用的获取本地化月份名称的方法?另外,我可以格式化时间戳的提取部分,而不是当前的cast-lpad-extract构造吗? 提前致谢。     
已邀请:
        引用表中包含本地化字符串并带有月份号的键呢?我以为这是在Firebird系统表中完成的,但是无法找到文档或系统表中的位置(如果确实存在)。 编辑: 我已经检查了系统表和文档,并且文字在Firebird本身中不可用。对不起:-)     
        可以使用DECODE内置函数代替CASE:http://www.firebirdsql.org/refdocs/langrefupd21-intfunc-decode.html     
        我认为没有内置功能。您应该考虑为此编写自己的UDF。完成后,使用非常简单。以下资源应为您指明正确的方向: http://www.firebirdsql.org/index.php?op=useful&id=deatz_udf http://www.firebirdfaq.org/faq83/ http://www.ibphoenix.com/downloads/writing_internal_udfs.pdf 我肯定希望下一个主要版本(3.0)将支持编写内部函数。 更新资料 Firebird 3.0将支持内部SQL功能:http://tracker.firebirdsql.org/browse/CORE-2047     

要回复问题请先登录注册