vistas vista ver una tutorial funciona español ejemplos datos createview como bases postgresql intervals

tutorial - ver una vista postgresql



Intervalo dinámico(basado en columnas) (5)

Para crear intervalos basados ​​en valores de columna, recomiendo agregar dos columnas en su tabla. Por ejemplo, la columna "período_valor" :: INT4 y la columna "nombre_período" :: VARCHAR. La columna "nombre_período" puede almacenar los siguientes valores:

  • microsegundo
  • milisegundos
  • segundo
  • minuto
  • hora
  • día
  • semana
  • mes
  • trimestre
  • año
  • década
  • siglo
  • milenio

+--------------+-------------+ | period_value | period_name | +--------------+-------------+ | 2 | minute | +--------------+-------------+

Ahora puedes escribir:

SELECT NOW() - (period_value::TEXT || '' '' || period_name::TEXT)::INTERVAL FROM table;

¿Cómo agrego un número dinámico de días (basado en columnas) a AHORA?

SELECT NOW() + INTERVAL a.number_of_days "DAYS" AS "The Future Date" FROM a;

¿Dónde a.number_of_days es un entero?


Por lo general, multiplico el número por el interval ''1 day'' o similar, por ejemplo:

select now() + interval ''1 day'' * a.number_of_days from a;


Sé que este tiene un año de antigüedad, pero si necesita usar una columna para especificar el intervalo real (por ejemplo, "días", "meses", entonces vale la pena saber que también puede conectar su cadena a un intervalo, dando:

SELECT now()+ CAST(the_duration||'' ''||the_interval AS Interval)

Así que la pregunta original se convertiría en:

SELECT now() + CAST(a.number_of_days||" DAYS" AS Interval) as "The Future Date" FROM a;


Si tenemos un campo con un valor de cadena de intervalo como ''41 años 11 meses 4 días ''y queremos convertirlo a la fecha de nacimiento, utilice esta consulta:

UPDATE "february14" set dob = date ''2014/02/01'' - (patient_age::INTERVAL)

dob es el campo de fecha para convertir ''41 años 11 meses 4 días '' a '' 1972/10/14 '' por ejemplo
patient_age es un campo varchar que tiene una cadena como ''41 años 11 meses 4 días ''

Y esta es la consulta para convertir la edad de nuevo a la fecha de nacimiento.

SELECT now() - INTERVAL ''41 years 10 mons 10 days'';


Yo prefiero esta manera. Creo que es bastante fácil y limpio. En postgre necesitas un interval para usar el operador + con timestamp

select (3||'' seconds'')::interval; select now()+ (10||'' seconds'')::interval,now();

donde puede usar segundos, minutos ... días, meses ... y puede reemplazar los números a su columna.

select now()+ (column_name||'' seconds'')::interval,now() from your_table;