Мне нужно получить различные части поля 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?
Заранее спасибо.