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)
-   -   Sumar 1 Segundo A 'now' (https://www.clubdelphi.com/foros/showthread.php?t=31266)

marceloalegre 03-05-2006 22:53:28

Sumar 1 Segundo A 'now'
 
Buenas tardes amigos:
Consultita simple la mia!
Les cuento, tengo este triger:
Código SQL [-]
AS
declare variable aux timestamp;
begin
  if ((old.autorizacion != new.autorizacion) or
     (old.fechavalidez != new.fechavalidez)) then
  begin
    select max(fechahorahasta) from autorizacion into :aux;
    if (:aux > 'NOW') then
    update autorizacion set fechahorahasta = 'NOW'
    where
    fechahorahasta = :aux;
    insert into AUTORIZACION (NRODEAUTORIZACION,FECHAHORADESDE,FECHAHORAHASTA)
    values (new.autorizacionsri,'NOW',new.fechavalidez);
  end
end
donde al ultimo 'NOW' quiero sumarle 1 segundo cuando hace el insert ...

Me pueden ayudar?

marceloalegre 04-05-2006 22:58:23

Estuve investigando la cuestion. Les cuento que no he encontrado informacion asociada al tema en la documentacion de interbase, tampoco ningun sitio web donde se muestren ejemplos de operatorias con 'NOW' , por lo tanto calculo que mañana voy a cambiar la implementacion, debido a que evidentemente no hay nada concreto :eek: !

Un saludo a todos amigos!

lpmlpm 05-05-2006 01:23:49

Solo sumale 0.00002 a la fecha en cuestión y obtienes la fecha correspondiente al siguiente segundo, solo que para que el truco funcione debes hacer un cast primero para que Firebird interprete a 'NOW' como un valor TIMESTAMP; esta consulta te devuelve la fecha actual y la fecha un segundo despues en un mismo registro

Código SQL [-]
select cast('now' as TIMESTAMP), cast('now'  as TIMESTAMP) + 0.00002
from rdb$database

Saludos y hasta pronto

Casimiro Notevi 05-05-2006 14:34:08

Cita:

Empezado por lpmlpm
Solo sumale 0.00002 a la fecha en cuestión y obtienes la fecha correspondiente al siguiente segundo, solo que para que el truco funcione debes hacer un cast primero para que Firebird interprete a 'NOW' como un valor TIMESTAMP; esta consulta te devuelve la fecha actual y la fecha un segundo despues en un mismo registro

Código SQL [-]select cast('now' as TIMESTAMP), cast('now' as TIMESTAMP) + 0.00002 from rdb$database


Saludos y hasta pronto

¿ 0.00002 ?

En todo caso, 1/24horas/60minutos/60segundos
Porque si fuese 0.00002 * 60segundos * 60minutos * 24 horas = 1.728
Eso sería un día y casi 3/4

lpmlpm 05-05-2006 18:56:58

cierto, en realidad lo unico que hice fue empezar a sumarle decimales y en el primero que me dió un segundo despues y que en mis pruebas funcionó fue el que puse, en realidad haciendo un redondeo del calculo que mencionas, sumando 0.000012 es suficiente para obtener el segundo inmediato superior, como quien pregunta no menciona que fuera a usar ese valor acarreado para posteriores cálculos supuse que no le afectaría en la manera en que mencionas...

Muy buena aclaración... Saludos


La franja horaria es GMT +2. Ahora son las 14:36:47.

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