Home » Non-English Forums » Spanish » Tipo de dato timestamp (10g, XE)
Tipo de dato timestamp [message #473743] |
Tue, 31 August 2010 10:27 ![Go to next message Go to next message](/forum/theme/orafaq/images/down.png) |
aguinav29
Messages: 28 Registered: August 2010 Location: CR
|
Junior Member |
![aguinav29@gmail.com](/forum/theme/orafaq/images/google.png)
|
|
Buenos dias amigos.... la pregunta es la seguiente. Estoy desarrollando una pequeña aplicacion con Oracle aplication express (Apex 3.2.1), en una tabla tengo varios datos definidos como timestamp el cual me permite guardar dias, horas, minutos y segundos ahi todo va bien, pero a la hora de restar esos datos por ejemplo select fecha_despacho_frontera - fecha_arribo_frontera from redestino el resultado de esta resta, que es para saber cuento tiempo estubo en frontera, es el sgte eso quiere decir que estuvo 0 dias, 2 horas , 14 minitos y 0 segundos, lo que pasa es que este resultado lo tengo que guardar en un campo, mi duda es que de que tipo de dato debo declarar este campo que almacena ese resultado??? lo he declarado como varchar2, number, date, pero a la hora de que lo paso a varchar el resultado select to_char(fecha_despacho_frontera - fecha_arribo_frontera ,'dd/mm/yyyy dd:hh:mi:ss') from redestino este es el resultado +000000000 02:14:00.000000 asi lo puedo guardar en ese campo pero declarado como varchar2, pero la idea no es que se vea asi sino como la primer opcion! Slds y gracias por la ayuda que me puedan dar!
|
|
|
Re: Tipo de dato timestamp [message #473779 is a reply to message #473743] |
Tue, 31 August 2010 12:12 ![Go to previous message Go to previous message](/forum/theme/orafaq/images/up.png) ![Go to next message Go to next message](/forum/theme/orafaq/images/down.png) |
![](http://www.orafaq.com/forum/images/custom_avatars/43710.gif) |
Barbara Boehmer
Messages: 9097 Registered: November 2002 Location: California, USA
|
Senior Member |
|
|
SCOTT@orcl_11gR2> create table redestino
2 (fecha_despacho_frontera timestamp,
3 fecha_arribo_frontera timestamp,
4 tiempo_en_frontera varchar2 (12))
5 /
Table created.
SCOTT@orcl_11gR2> insert all
2 into redestino values (systimestamp, systimestamp-(1/7), null)
3 into redestino values (systimestamp, systimestamp-(13/7), null)
4 select * from dual
5 /
2 rows created.
SCOTT@orcl_11gR2> column fecha_despacho_frontera format a28
SCOTT@orcl_11gR2> column fecha_arribo_frontera format a28
SCOTT@orcl_11gR2> column tiempo_en_frontera format a18
SCOTT@orcl_11gR2> select * from redestino
2 /
FECHA_DESPACHO_FRONTERA FECHA_ARRIBO_FRONTERA TIEMPO_EN_FRONTERA
---------------------------- ---------------------------- ------------------
31-AUG-10 10.10.46.332000 AM 31-AUG-10 06.45.03.000000 AM
31-AUG-10 10.10.46.332000 AM 29-AUG-10 01.36.29.000000 PM
2 rows selected.
SCOTT@orcl_11gR2> select fecha_despacho_frontera - fecha_arribo_frontera
2 from redestino
3 /
FECHA_DESPACHO_FRONTERA-FECHA_ARRIBO_FRONTERA
---------------------------------------------------------------------------
+000000000 03:25:43.332000
+000000001 20:34:17.332000
2 rows selected.
SCOTT@orcl_11gR2> select extract (day from fecha_despacho_frontera - fecha_arribo_frontera)
2 || ' '
3 || lpad (extract (hour from fecha_despacho_frontera - fecha_arribo_frontera), 2, '0')
4 || ':'
5 || lpad (extract (minute from fecha_despacho_frontera - fecha_arribo_frontera), 2, '0')
6 || ':'
7 || lpad (trunc (extract (second from fecha_despacho_frontera - fecha_arribo_frontera)), 2, '0')
8 from redestino
9 /
EXTRACT(DAYFROMFECHA_DESPACHO_FRONTERA-FECHA_ARRIBO_FRONTERA)||''||
-------------------------------------------------------------------
0 03:25:43
1 20:34:17
2 rows selected.
SCOTT@orcl_11gR2> update redestino
2 set tiempo_en_frontera =
3 extract (day from fecha_despacho_frontera - fecha_arribo_frontera)
4 || ' '
5 || lpad (extract (hour from fecha_despacho_frontera - fecha_arribo_frontera), 2, '0')
6 || ':'
7 || lpad (extract (minute from fecha_despacho_frontera - fecha_arribo_frontera), 2, '0')
8 || ':'
9 || lpad (trunc (extract (second from fecha_despacho_frontera - fecha_arribo_frontera)), 2, '0')
10 /
2 rows updated.
SCOTT@orcl_11gR2> select * from redestino
2 /
FECHA_DESPACHO_FRONTERA FECHA_ARRIBO_FRONTERA TIEMPO_EN_FRONTERA
---------------------------- ---------------------------- ------------------
31-AUG-10 10.10.46.332000 AM 31-AUG-10 06.45.03.000000 AM 0 03:25:43
31-AUG-10 10.10.46.332000 AM 29-AUG-10 01.36.29.000000 PM 1 20:34:17
2 rows selected.
SCOTT@orcl_11gR2>
|
|
|
|
Re: Tipo de dato timestamp [message #473801 is a reply to message #473783] |
Tue, 31 August 2010 13:22 ![Go to previous message Go to previous message](/forum/theme/orafaq/images/up.png) ![Go to next message Go to next message](/forum/theme/orafaq/images/down.png) |
![](http://www.orafaq.com/forum/images/custom_avatars/102589.gif) |
Michel Cadot
Messages: 68675 Registered: March 2007 Location: Nanterre, France, http://...
|
Senior Member Account Moderator |
|
|
Another way is:
SQL> create table redestino
2 (fecha_despacho_frontera timestamp,
3 fecha_arribo_frontera timestamp,
4 tiempo_en_frontera varchar2 (12))
5 /
Table created.
SQL> insert all
2 into redestino values (systimestamp, systimestamp-(1/7), null)
3 into redestino values (systimestamp, systimestamp-(13/7), null)
4 select * from dual
5 /
2 rows created.
SQL> column fecha_despacho_frontera format a28
SQL> column fecha_arribo_frontera format a28
SQL> column tiempo_en_frontera format a18
SQL> select * from redestino;
FECHA_DESPACHO_FRONTERA FECHA_ARRIBO_FRONTERA TIEMPO_EN_FRONTERA
---------------------------- ---------------------------- ------------------
31/08/2010 20:17:03.484 31/08/2010 16:51:20.000
31/08/2010 20:17:03.484 29/08/2010 23:42:46.000
2 rows selected.
SQL> select trunc(diff)||' '||to_char(to_date(round(mod(diff,1)*86400),'SSSSS'),'HH24:MI:SS')
2 from (select (fecha_despacho_frontera+0) - (fecha_arribo_frontera+0) diff
3 from redestino)
4 /
TRUNC(DIFF)||''||TO_CHAR(TO_DATE(ROUND(MOD(DIFF,1
-------------------------------------------------
0 03:25:43
1 20:34:17
2 rows selected.
SQL> update redestino
2 set tiempo_en_frontera =
3 trunc((fecha_despacho_frontera+0) - (fecha_arribo_frontera+0))
4 ||' '||
5 to_char(to_date(round(mod((fecha_despacho_frontera+0) - (fecha_arribo_frontera+0),1)*86400),
6 'SSSSS'),
7 'HH24:MI:SS')
8 /
2 rows updated.
SQL> select * from redestino;
FECHA_DESPACHO_FRONTERA FECHA_ARRIBO_FRONTERA TIEMPO_EN_FRONTERA
---------------------------- ---------------------------- ------------------
31/08/2010 20:17:03.484 31/08/2010 16:51:20.000 0 03:25:43
31/08/2010 20:17:03.484 29/08/2010 23:42:46.000 1 20:34:17
2 rows selected.
Regards
Michel
|
|
|
|
Goto Forum:
Current Time: Sat Sep 07 19:56:25 CDT 2024
|