Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Como obtener la HORA al Restar minutos en campo TIME ???? (https://www.clubdelphi.com/foros/showthread.php?t=53425)

AGAG4 20-02-2008 17:36:10

Como obtener la HORA al Restar minutos en campo TIME ????
 
Uso Firebird 1.5.5

Buen dia, he estado buscando por el foro y no se si soy malo para buscar ó ando mal de mi vista, pero No he encontrado la forma de Restartale a un campo time las horas, minutos ó segundos y determinar la hora en que queda, esto dentro de un Trigger ó procedimiento almacenado en Firebird, por ejemplo, quiero restarle un minuto al campo de las siguientes formas:

Ejemplo:
Si son las 8:10 am quiero restarle 1 minuto para que quede las 8:09 am

Código SQL [-]
  //Con esto marca error CONVERSION ERROR FROM STRING "34541.0000"
  New.Hora = New.Hora - Cast('00:01' as Time);
 
  Ó
 
  //Con esto marca error CONVERSION ERROR FROM STRING "34607.0000"
  New.Hora = Cast(New.Hora as Time) - Cast('00:01' as Time);

Agradezco cualquier sugerencia al respecto....

jhonny 20-02-2008 17:54:46

Con FireBird 2.1 sería muy sencillo, asi:

Código SQL [-]
New.Hora = DATEADD(MINUTE, -1, New.Hora);

Pero con FireBird 1.5.5, se me ocurre lo siguiente, aunque no lo he probado seguramente funciona debido a que el campo es de tipo Time:

Código SQL [-]
New.Hora = New.Hora - 1;

Si lo anterior no funciona, prueba con lo siguiente:

Código SQL [-]
New.Hora = New.Hora - 0.1;

Espero que alguna de estas opciones te sirva ;).

AGAG4 20-02-2008 18:47:02

Cita:

Empezado por jhonny (Mensaje 267295)
Con FireBird 2.1 sería muy sencillo, asi:


Código SQL [-]
New.Hora = DATEADD(MINUTE, -1, New.Hora);

Pero con FireBird 1.5.5, se me ocurre lo siguiente, aunque no lo he probado seguramente funciona debido a que el campo es de tipo Time:


Código SQL [-]
New.Hora = New.Hora - 1;

Si lo anterior no funciona, prueba con lo siguiente:

Código SQL [-]
New.Hora = New.Hora - 0.1;

Espero que alguna de estas opciones te sirva ;).

Ya probe con las ultimas 2 opciones y no hace nada, no resta ni minutos, ni segundos :confused:, y no puedo usar la 1era porque uso firebird 1.5.5, tengo problemas con varios trigger's para actualizarme a la version 2, espero pronto darme el tiempo para dar ese brinco.... gracias por su ayuda....

AGAG4 20-02-2008 18:55:11

Ya encontre la forma de restarle los minutos, tienes que restarle los 60 segundos del minuto, quedaría asi :

Código SQL [-]
  //Restar 1 minuto
  New.Hora = New.Hora - 60;
 
  //Restar 2 minutos
  New.Hora = New.Hora - 120;
 
  //Y asi sucesivamente

:)


La franja horaria es GMT +2. Ahora son las 21:37:27.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi