to_number postgres interval example ejemplo cast time casting timedelta

interval - timestamp postgresql insert



AdiciĆ³n de<integer> segundos a una<marca de hora> en PostgreSQL (1)

El trick es crear un intervalo fijo y multiplicarlo con el número de segundos en la columna:

SELECT start_time, expiration_time_seconds, start_time+expiration_time_seconds * interval ''1 second'' FROM whatever ORDER BY start_time; start_time | expiration_time_seconds | end_time ----------------------------+-------------------------+---------------------------- 2014-08-05 08:23:32.428452 | 172800 | 2014-08-07 08:23:32.428452 2014-08-10 09:49:51.082456 | 3600 | 2014-08-10 10:49:51.082456 2014-08-13 13:03:56.980073 | 3600 | 2014-08-13 14:03:56.980073 2014-08-21 06:31:38.596451 | 3600 | 2014-08-21 07:31:38.596451

Tengo una tabla de artículos con las siguientes columnas:

  • columna start_time ( timestamp without time zone )
  • columna expiration_time_seconds ( integer )

Por ejemplo, algunos valores son:

SELECT start_time, expiration_time_seconds FROM whatever ORDER BY start_time; start_time | expiration_time_seconds ----------------------------+------------------------- 2014-08-05 08:23:32.428452 | 172800 2014-08-10 09:49:51.082456 | 3600 2014-08-13 13:03:56.980073 | 3600 2014-08-21 06:31:38.596451 | 3600 ...

¿Cómo agrego el tiempo de caducidad, dado en segundos, al inicio_tiempo?

He intentado formatear una cadena de intervalo de tiempo para el comando de interval , pero he fallado:

blah=> SELECT interval concat(to_char(3600, ''9999''), '' seconds''); ERROR: syntax error at or near "(" LINE 1: SELECT interval concat(to_char(3600, ''9999''), '' seconds'');