Práctico 3

Práctico 3

de Rita Patricia De Rosa Temes -
Número de respuestas: 2

Estimados Fernando y Rodrigo, primero que nada agradecerles por grabar las clases ya que se me ha complicado asistir.

Haciendo la primera parte del P3, me surgieron las siguientes dudas:

Ejercicio 5:

Para cada vuelo que sale del aeropuerto ’AER’, obtener la hora de llegada si salieran ahora.

select flight_no , now()+duration

from routes r

where departure_airport = 'AER';

SQL Error [42883]: ERROR: el operador no existe: timestamp with time zone + interval[]

Hint: Ningún operador coincide en el nombre y tipos de argumentos. Puede ser necesario agregar conversión explícita de tipos.


Ejercicio 6:

Para cada vuelo que sale del aeropuerto de código AER, obtener la duración en minutos de los vuelos que salen del aeropuerto AER. (ver date time y extract)

select flight_no 

from routes r

where departure_airport = 'AER';

SQL Error [42883]: ERROR: el operador no existe: character varying - character varying

Hint: Ningún operador coincide en el nombre y tipos de argumentos. Puede ser necesario agregar conversión explícita de tipos.

Por ahora es todo, muchas gracias!

En respuesta a Rita Patricia De Rosa Temes

Re: Práctico 3

de Fernando Carpani -
Hola Rita.
Algunas  preguntas: 
  • qué versión de postgresql estás usando ?
  • Estás haciendo las consultas a través de dbEaver, psql o qué interfase ?
  • Cargaste la base con los datos que te dimos o desde otro lado ?
La consulta 5, tal cual la escribiste en el mensaje, me funciona perfecto. Y me funciona bien desde dbEaver y también desde PSQL.

El error en la consulta 6, no tiene sentido. No hay ningun operador raro (como sí hay en la 5).

En esta página están las funciones de date y time: https://www.postgresql.org/docs/15/functions-datetime.html

Ahí se puede ver que está todo bien con sumar timestamps (fecha-hora) con interval (duration).

El error que da es: Ningún operador coincide en el nombre y tipos de argumentos. Puede ser necesario agregar conversión explícita de tipos

Este error suele darlo cuando hay un operador que no tiene el tipo adecuado. 
A cualquier valor, se le puede cambiar el tipo poniendole, pegado al valor: ::<tipo>

Probá estos dos comandos:

select '50:00'+'01:00';

select '50:00'::interval+'01:00';

A mi me en el primero, me da un error: no sabe con qué tipo tiene que sumar.

En el segundo, le decimos que el primer parámetro es un interval... prueba entonces con la suma de interval y allí puede interpretar bien el segundo parámetro como interval.

Probá ponerle ::timestamp al now...

Contanos cópmo te va.

Saludos
FDO.