PDA

Ver la Versión Completa : Sumar 1 Segundo A 'now'


marceloalegre
03-05-2006, 22:53:28
Buenas tardes amigos:
Consultita simple la mia!
Les cuento, tengo este triger:

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


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
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 [-] (http://clubdelphi.com/foros/#)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