![]() |
restar un dia a una fecha para determinar la fecha fin de la vigencia de un producto de nuevo dando batalla raza, mi siguiente problema es: estoy migrando una base de datos de una empresa que usa un sistema "X" a la base de datos que usa mi sistema, tengo una tabla origen, la cual contiene un campo fecha, la tabla a la cual voy a pasar esa informacion necesita dos datos de fecha, estas fechas determinan el periodo de vigencia del registro un ejemplo seria: PRODUCTOA, MATERIAPRIMAA, FECHAINICIO_A, FECHAFIN_A, PRODUCTOA, MATERIAPRIMAA, FECHAINICIO_B, FECHAFIN_B, cuando se decide cambiar la vigencia para la combinacion PRODUCTOA, MATERIAPRIMAA, se agrega otro registro con distinto periodo de vigencia, estos periodos jamas se deben traslapar, o sea no se puede tener la combinacion : PRODUCTOA, MATERIAPRIMAA, FECHAINICIO_A, FECHAFIN_A, PRODUCTOA, MATERIAPRIMAA, FECHAINICIO_A, FECHAFIN_B, la forma en que se determina la vigencia en la tabla origen es: PRODUCTOA, MATERIAPRIMAA, FECHA_A, PRODUCTOA, MATERIAPRIMAA, FECHA_B, la fecha FECHA_B que representa la fecha de inicio de vigencia para el segundo registro, a su vez representa la fecha fin menos un dia del primer registro, lo que yo necesito es un procedimiento que me reste un dia a la siguiente fecha de la tabla origen, siempre y cuando corresponda a la vigencia del mismo productoA y MateriaA, para restar el dia uso la funcion DATEADD(DAY, -1, FECHA), el lio es como decirle al procedimiento que la FECHA a la cual se le restara el dia es a la siguiente y no a la del registro donde esta posicionado, y como lo explique anteriormente, que la fecha siguiente corresponda a la misma combinacion PRODUCTOA, MATERIAPRIMAA, estoy probando usando una subconsulta, pero aun no doy, cualquier ayuda, como siempre se les agradecera encarecidamente. |
Re: restar un dia a una fecha para determinar la fecha fin de la vigencia de un produ Asumiendo que quieres la fecha más vieja para el inicio (FECHAINICIO_A < FECHAINICIO_B) y que quieres la fecha más nueva para el fin (FECHAFIN_A < FECHAFIN_B) puedes probar con: SELECT Producto, Min(FechaInicio) AS MinFechaInicio, Max(FechaFin) AS MaxFechaFin FROM tabla GROUP BY Producto Y sobre esa sentencia hacer las operaciones. |
Re: restar un dia a una fecha para determinar la fecha fin de la vigencia de un produ A ver: Yo entiendo que para una combinación productoA-materiaPrimaA tienes en la tabla vieja una serie de fechas (fechaA, fechaB, fechaC, fechaD) y quieres tener en la nueva tabla: ProductoA, MateriaPrimA, FechaA, FechaB-1 ProductoA, MateriaPrimA, FechaB, FechaC-1 ProductoA, MateriaPrimA, FechaC, FechaD-1 Si lo he entendido bien, debería funcionar algo así: Código: Insert into NuevaTabla Select V1.producto, V1.MateriaPrima, V1.Fecha, Min(DATEADD(DAY, -1, V2.Fecha)) From ViejaTabla As V1 |
| La zona horaria es GMT -6. Ahora son las 10:15. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.