Tareas por SQL

16/12/2003 - 18:11 por eD | Informe spam
Hola Foreros!!

Tengo una tabla con un campo fecha (que es el
registro de entrada de un empleado)

Alguien sabe como puedo programar en
SQL para que cuando los registros que ya hayan
cumplido el año copiarlos a una tabla temporal???
y que esa tarea la ejecute SQL diario.

De antemano Gracias!!

Preguntas similare

Leer las respuestas

#1 Isaías
16/12/2003 - 18:48 | Informe spam
Genere una tarea con la siguiente instruccion

INSERT INTO MyTablaRespaldo
SELECT * FROM MyTablaOrigen WHERE DATEDIFF(DD, MyColFecha,
GETDATE()) >= 365

O bien, podria incluir un TRIGGER en la MyTablaOrigen de
DELETE, donde se hiciera:

INSERT INTO MyTablaRespaldo
SELECT * FROM DELETED

Y en la Tarea, hace un:

DELETE MyTablaOrigen WHERE DATEDIFF(DD, MyColFecha, GETDATE
()) >= 365
Respuesta Responder a este mensaje
#2 Gustavo Larriera [MVP]
16/12/2003 - 19:09 | Informe spam
Puedes hacer un stored procedure parecido a éste (en mi ejemplo uso tablas
temporales #empleados y #empleados2). este procedimiento MUEVE los datos de
la tabla Empleados hacia la tabla Empleados2. Si solamente deseas copiar,
entonces debes quitar la sentencia DELETE.

CREATE PROCEDURE usp_MoverEmpleados
AS
BEGIN TRANSACTION
INSERT #empleados2 (numemp, nombre, entrada)
SELECT numemp, nombre, entrada
FROM #empleados
WHERE DATEDIFF(year, entrada, GETDATE()) >= 1

IF @@ERROR <> 0
BEGIN
ROLLBACK TRANSACTION
RETURN
END

DELETE
FROM #empleados
WHERE DATEDIFF(year, entrada, GETDATE()) >= 1

IF @@ERROR <> 0
BEGIN
ROLLBACK TRANSACTION
RETURN
END

COMMIT TRANSACTION
RETURN
GO

Luego puedes crearte un Job SQL que haga EXEC usp_MoverEmpleados y a dicho
job le creas un agendamiento para que se ejecute por ejemplo a cierta hora
cada noche.

Saludos
gux
Gustavo Larriera, MSFT MVP-SQL
Uruguay LatAm

This message is provided "AS IS" with no warranties expressed or implied,
and confers no rights.


"" wrote in message
news:0b6e01c3c3f7$a038eed0$
Hola Foreros!!

Tengo una tabla con un campo fecha (que es el
registro de entrada de un empleado)

Alguien sabe como puedo programar en
SQL para que cuando los registros que ya hayan
cumplido el año copiarlos a una tabla temporal???
y que esa tarea la ejecute SQL diario.

De antemano Gracias!!
Respuesta Responder a este mensaje
#3 Isaías
16/12/2003 - 22:30 | Informe spam
Hola Gustavo

Tengo mis dudas en hacer el DATEDIFF con "year", checa
esta instruccion:

select datediff(year,'2003-12-31','2004-01-01')

En Realidad la diferencia entre estas 2 fechas, es
solamente de 1 dia.

Saludos.
Respuesta Responder a este mensaje
#4 ulises
17/12/2003 - 00:45 | Informe spam
Con el permiso de Uds, :-)

Me parece que ambas respuestas son correctas dependiendo
de como se entienda el requerimiento inicial, si es que se
trata de pasar los registros que hayan cumplido una
antiguedad de 1 año, o aquellos que correspondan a un
periodo anterior (en este caso el año anterior).

Saludos desde Lima,
Ulises

Hola Gustavo

Tengo mis dudas en hacer el DATEDIFF con "year", checa
esta instruccion:

select datediff(year,'2003-12-31','2004-01-01')

En Realidad la diferencia entre estas 2 fechas, es
solamente de 1 dia.

Saludos.
Respuesta Responder a este mensaje
#5 Isaías
17/12/2003 - 01:18 | Informe spam
Mi respuesta fue entendiendo que "Desea pasar los
registros que hayan cumplido 365 dias de antiguedad",
aunque tienes TODA LA RAZON.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida