Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

Consulta que devuelve formato fecha en ingles, cambiar a español

Estas en el tema de Consulta que devuelve formato fecha en ingles, cambiar a español en el foro de PostgreSQL en Foros del Web. Saludos, tengo la siguiente consulta: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original SELECT age ( TIMESTAMP '2010-08-23' , TIMESTAMP '2009-06-30' ) donde la misma devuelve un ...
  #1 (permalink)  
Antiguo 23/08/2010, 07:27
Avatar de djmashe  
Fecha de Ingreso: julio-2007
Ubicación: Posadas, Misiones
Mensajes: 52
Antigüedad: 17 años, 4 meses
Puntos: 2
Exclamación Consulta que devuelve formato fecha en ingles, cambiar a español

Saludos, tengo la siguiente consulta:

Código SQL:
Ver original
  1. SELECT age(TIMESTAMP '2010-08-23', TIMESTAMP '2009-06-30')

donde la misma devuelve un periodo de años, meses o días (en caso que se de la situación) pero me devuelve en inglés, como se ve a continuación:

Código SQL:
Ver original
  1. "1 years 1 mon 23 days"

Como podría realizar la conversion de dichos textos para que en la respuesta de la consulta me los devuelva en español:

Código SQL:
Ver original
  1. "1 año 1 mes 23 dias"

¿Se podría realizar en la misma consulta o debería crear algún procedimiento almacenado?

Desde ya muchas gracias...
  #2 (permalink)  
Antiguo 23/08/2010, 08:57
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Consulta que devuelve formato fecha en ingles, cambiar a español

Hola djmashe

desde una consulta podría ser con replace.

Código SQL:
Ver original
  1. SELECT
  2. REPLACE(
  3.   REPLACE(
  4.     REPLACE(
  5.       REPLACE(
  6.         REPLACE(
  7.           REPLACE(
  8.             AGE(TIMESTAMP '2010-08-23', TIMESTAMP '2008-04-23')::TEXT,
  9.           'years','AÑOS'),
  10.         'year','AÑO'),
  11.       'mons','MESES'),
  12.     'mon','MES'),
  13.    'days','DIAS'),
  14. 'day','DIA');

Sin embargo, para las ultimas versiones de postgres he escuchado que soporta el manejo de lenguajes en la salida de las funciones. Algo relacionado con el lc_time, lc_type y cosas por el estilo. Sin embargo, no se mucho del tema, pero puedes explorar un poco mas.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 23/08/2010, 21:30
Avatar de djmashe  
Fecha de Ingreso: julio-2007
Ubicación: Posadas, Misiones
Mensajes: 52
Antigüedad: 17 años, 4 meses
Puntos: 2
Respuesta: Consulta que devuelve formato fecha en ingles, cambiar a español

Gracias huesos52, tu consulta me simplifico las cosas jeje. Por otro lado justo había logrado realizar lo que necesitaba pero de manera distinta, por lo cual dejo a continuación mi versión para aquellos que la quieran usar|analizar|optimizar.

Código SQL:
Ver original
  1. SELECT CASE WHEN (date_part('year', age(TIMESTAMP '2010-08-23', TIMESTAMP '2010-01-01')) > 0) THEN
  2.                   date_part('year', age(TIMESTAMP '2010-08-23', TIMESTAMP '2010-01-01')) || CASE WHEN (date_part('year', age(TIMESTAMP '2010-08-23', TIMESTAMP '2010-01-01')) = 1) THEN ' año  '
  3.                                                                                                  WHEN (date_part('year', age(TIMESTAMP '2010-08-23', TIMESTAMP '2010-01-01')) > 1) THEN ' años ' END
  4.             ELSE '' END ||
  5.        CASE WHEN (date_part('month', age(TIMESTAMP '2010-08-23', TIMESTAMP '2010-01-01')) > 0) THEN
  6.                   date_part('month', age(TIMESTAMP '2010-08-23', TIMESTAMP '2010-01-01')) || CASE WHEN (date_part('month', age(TIMESTAMP '2010-08-23', TIMESTAMP '2010-01-01')) = 1) THEN ' mes  '
  7.                                                                                                   WHEN (date_part('month', age(TIMESTAMP '2010-08-23', TIMESTAMP '2010-01-01')) > 1) THEN ' meses ' END
  8.             ELSE '' END ||
  9.        CASE WHEN (date_part('day', age(TIMESTAMP '2010-08-23', TIMESTAMP '2010-01-01')) > 0) THEN
  10.                   date_part('day', age(TIMESTAMP '2010-08-23', TIMESTAMP '2010-01-01')) || CASE WHEN (date_part('day', age(TIMESTAMP '2010-08-23', TIMESTAMP '2010-01-01')) = 1) THEN ' dia  '
  11.                                                                                                 WHEN (date_part('day', age(TIMESTAMP '2010-08-23', TIMESTAMP '2010-01-01')) > 1) THEN ' dias ' END
  12.             ELSE '' END AS Periodos;

Esta versión de la consulta lo que realiza es evitar devolver los textos de '0 años', '0 meses' o '0 dias' en caso de darse una fecha que coincida con ese patrón. En el ejemplo anterior en vez de mostrar:

Código SQL:
Ver original
  1. 0 años 7 meses 22 dias

da como resultado:

Código SQL:
Ver original
  1. 7 meses 22 dias

Etiquetas: español, formato, ingles, fechas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:33.