2012-02-01 23 views

Respuesta

25

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.

6

Puede haber una respuesta más rápida, pero parece ser posible por:

  • En cuanto a su int en una cadena
  • Lectura esa cadena como una marca de tiempo
  • Viendo el mes de la fecha y hora.

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 
+0

Gracias señor ... Está funcionando bien. – user007

+0

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

Cuestiones relacionadas