Re: Convertir time a numero.

From: Pablo Braulio <brulics(at)gmail(dot)com>
To: Calabaza Calabaza <calalinux(at)gmail(dot)com>, postgres <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Convertir time a numero.
Date: 2008-03-18 17:45:05
Message-ID: 47DFFFA1.3050702@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hola.

Voy a explicar un poco lo que trato de hacer.

Tengo la siguiente vista:

SELECT * from vista_tiempototalofertas ;
coste | oferta | importe
- -----------------+--------------+---------
00:00:34.711404 | 08 001_A 01 | 2000
00:00:07.618386 | 08 001_A 02 |
(2 filas)

Como puedes ver tengo un campo "coste" (del tipo interval) donde se
recoge un tiempo, que es obtenido mediante un sum() al crear la vista.

\d vista_tiempototalofertas ;
Vista «public.vista_tiempototalofertas»
Columna | Tipo | Modificadores
- ---------+----------+---------------
coste | interval |
oferta | text |
importe | numeric |
Definición de vista:
SELECT sum(t.tiempo::interval) AS coste, o.numoferta AS oferta, co.importe
FROM totalesfases t
LEFT JOIN vista_ofertas o ON o.id = t.oferta
LEFT JOIN clientesofertas co ON co.oferta = t.oferta
GROUP BY o.numoferta, co.importe;

Lo que necesito hacer es obtener el coste de cada minuto
(importe/coste(minutos))

Mi problema principal era que el campo "coste" es de tipo interval y no
puedo dividir "importe" por coste, al no ser este último del tipo numeric.

Puedo aplicarle la conversión como tu me has dicho, pero no creo que sea
lo mas adecuado. Lo digo por esto:

SELECT coste from vista_tiempototalofertas ;
coste
- -----------------
00:00:34.711404
00:00:07.618386
(2 filas)

Ahora lo convierto a numeric:

SELECT to_char(coste,'MI.SS')::numeric as coste from
vista_tiempototalofertas ;
coste
- -------
0.34
0.07
(2 filas)

Como puedes ver, en la primera línea, para 34 segundos me dice que es
0.34. Lo cual no es correcto, debería ser 0,57. Debería hacer
(0.34/100)*60.

Creo que es mejor la opción que dice Alvaro.

SELECT extract(epoch from coste)/60 as coste from vista_tiempototalofertas ;
coste
- -----------
0.5785234
0.1269731
(2 filas)

Gracias por la ayuda.

- --

< ¡¡Nos vemos!! >
----------------------------
\
\
.::!!!!!!!:.
.!!!!!:. .:!!!!!!!!!!!!
~~~~!!!!!!. .:!!!!!!!!!UWWW$$$
:$$NWX!!: .:!!!!!!XUWW$$$$$$$$$P
$$$$$##WX!: .<!!!!UW$$$$" $$$$$$$$#
$$$$$ $$$UX :!!UW$$$$$$$$$ 4$$$$$*
^$$$B $$$$\ $$$$$$$$$$$$ d$$R"
"*$bd$$$$ '*$$$$$$$$$$$o+#"
"""" """""""
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFH3/+hK7lGsMchFswRAhgNAKC92drrScbz6G6gII7rqg8irOmcYACdFa3c
GUHz1Ny79R725PIblLPgJS4=
=zaE0
-----END PGP SIGNATURE-----

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Gabriel Hermes Colina Zambra 2008-03-18 18:08:46 Re: Se puede hacer ? - Aca tenes un ejemplito con una funcion usando lenguaje sql
Previous Message Moises Alberto Lindo Gutarra 2008-03-18 17:28:47 Re: Error al instalar 8.3 en Windows Vista