GETDATE() en Trigger Instead of

23/01/2008 - 10:12 por Juan Diego Bueno | Informe spam
Hola gente:

Estoy realizando un trigger instead of sobre una vista el cual realiza
modificaciones sobre unas tablas en función de dicha vista. El trigger
funciona perfectamente excepto en un aspecto. Si el campo FECHA_INS (de
fecha de inserción) en la vista es nulo, debe tomar la fecha del
sistema con GETDATE (también he probado con CURRENT_TIMESTAMP). He
probado tanto con ISNULL como con COALESCE e incluso haciendo un CAST a
smalldatetime. El tema es que al hacer la inserción con esa fecha en
NULL, lo hace correctamente excepto en que los segundos los pone a 0.
Por ejemplo, si la inserción se hace el día de hoy a las 10:11:12 en el
registro aparece 10:11:00. La verdad que es un problema menor puesto
que supongo que no afecte en posteriores procesos, pero me parece
curioso, y aún no he encontrado solución.

¿Alguna idea o explicacion?

http://www.moondance.tk
 

Leer las respuestas

#1 Carlos M. Calvelo
23/01/2008 - 14:05 | Informe spam
Hola Diego,


On 23 jan, 10:12, Juan Diego Bueno
wrote:
Hola gente:

Estoy realizando un trigger instead of sobre una vista el cual realiza
modificaciones sobre unas tablas en función de dicha vista. El trigger
funciona perfectamente excepto en un aspecto. Si el campo FECHA_INS (de
fecha de inserción) en la vista es nulo, debe tomar la fecha del
sistema con GETDATE (también he probado con CURRENT_TIMESTAMP). He
probado tanto con ISNULL como con COALESCE e incluso haciendo un CAST a
smalldatetime. El tema es que al hacer la inserción con esa fecha en
NULL, lo hace correctamente excepto en que los segundos los pone a 0.
Por ejemplo, si la inserción se hace el día de hoy a las 10:11:12 en el
registro aparece 10:11:00. La verdad que es un problema menor puesto
que supongo que no afecte en posteriores procesos, pero me parece
curioso, y aún no he encontrado solución.

¿Alguna idea o explicacion?




El tipo smalldatetime solo guarda hasta los minutos.

Prueba:

declare @d1 datetime
declare @d2 smalldatetime
set @d1 = getdate()
set @d2 = @d1
select @d1,@d2

Me dá que tu columna tendría que ser datetime en vez de
smalldatetime. Y sobre todo mira en la ayuda ;-)

Saludos,
Carlos

Preguntas similares