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 originalSELECT CASE WHEN (date_part('year', age(TIMESTAMP '2010-08-23', TIMESTAMP '2010-01-01')) > 0) THEN
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 '
WHEN (date_part('year', age(TIMESTAMP '2010-08-23', TIMESTAMP '2010-01-01')) > 1) THEN ' años ' END
ELSE '' END ||
CASE WHEN (date_part('month', age(TIMESTAMP '2010-08-23', TIMESTAMP '2010-01-01')) > 0) THEN
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 '
WHEN (date_part('month', age(TIMESTAMP '2010-08-23', TIMESTAMP '2010-01-01')) > 1) THEN ' meses ' END
ELSE '' END ||
CASE WHEN (date_part('day', age(TIMESTAMP '2010-08-23', TIMESTAMP '2010-01-01')) > 0) THEN
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 '
WHEN (date_part('day', age(TIMESTAMP '2010-08-23', TIMESTAMP '2010-01-01')) > 1) THEN ' dias ' END
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:
da como resultado: