Tengo una tabla con una columna month
(integer
). En esta columna, almaceno valores como 1, 2, .. 12
.
Pero tengo que mostrar el mes nombre.Obtener el nombre del mes del número en PostgreSQL
Ej: Si el valor es 1
necesito mostrar jan
.
Tengo una tabla con una columna month
(integer
). En esta columna, almaceno valores como 1, 2, .. 12
.
Pero tengo que mostrar el mes nombre.Obtener el nombre del mes del número en PostgreSQL
Ej: Si el valor es 1
necesito mostrar jan
.
Básicamente lo que ya se ha escrito @small_duck, pero un par de mejoras:
SELECT to_char(to_timestamp (4::text, 'MM'), 'TMmon')
Un molde liso al texto 4::text
es suficiente, sin necesidad de to_char(..)
.
Pregunta pregunta por minúscula "jan", hay un template pattern para eso: mon
.
Si desea localizar la salida, prefija la plantilla con modifierTM
.
Puede haber una respuesta más rápida, pero parece ser posible por:
Por ejemplo:
select to_char(to_timestamp(to_char(4, '999'), 'MM'), 'Mon')
devuelve 'APR.
Puede convertirlo en una función:
create function to_month(integer) returns varchar as
$$
select to_char(to_timestamp(to_char($1, '999'), 'MM'), 'Mon');
$$ language sql
y utilizarlo en todo el código.
select to_month(month_column) from mytable
Gracias señor ... Está funcionando bien. – user007
Oye, ¿alguna idea de por qué una implementación muy similar tendría dificultades para interpretar correctamente el nombre completo del mes? AÑO (DM.DATE) || TO_CHAR (TO_TIMESTAMP (TO_CHAR ( \t \t caso \t \t \t cuando \t \t \t \t mes (DM.DATE) 1> 12 luego 1 \t \t \t \t mes más (DM.TM_DIM_KY_DTE) 1 final \t \t \t, '99 '),' MM '),' Mon ') El objetivo era tener el año actual más un mes después del mes actual, por lo que noviembre de 2012 debería ser diciembre de 2012 como' 2012Dec '. Por algún motivo, ciertas letras se devuelven como números como Dec = 4ec o Jan = 1721395an – Phill