es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo obtener una lista de fechas en Pervasive SQL?

Nuestra base de datos de tiempo y asistencia es una base de datos Pervasive/Actian Zen. Lo que intento hacer es crear una consulta que liste los próximos 14 días a partir de hoy. Luego cruzaré esta lista de fechas con los registros de los empleados para tener una lista de personas/fechas para los próximos 14 días.

Ya lo hice fácilmente con una CTE recursiva en SQL Server. También podría hacerlo con un bucle en SQL Server, pero no puedo lograrlo con Pervasive SQL. Los bucles solo pueden existir dentro de procedimientos almacenados y disparadores.

Investigando, pensé que este código que encontré y adapté podría funcionar, pero no lo hace (y una investigación adicional sugiere que no hay una opción recursiva en absoluto en Pervasive).

WITH RECURSIVE cte_numbers(n, xDate) 
AS (
     SELECT 
           0, CURDATE() + 1
     UNION ALL
    SELECT 
     n+1, 
     dateAdd(day,n,xDate) 
    FROM 
     cte_numbers 
    WHERE n < 14
)
SELECT 
     xDate 
FROM 
cte_numbers;

Me preguntaba si alguien podría ayudarme a escribir una consulta SQL que me dé esta lista de fechas fuera de un procedimiento almacenado.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como no hay una opción recursiva en Pervasive SQL, necesitará encontrar un método alternativo para generar la lista de fechas. Una posible solución es utilizar una tabla temporal y un bucle para insertar las fechas en la tabla. Aquí hay un ejemplo de consulta que puede lograr esto:

    DECLARE @StartDate DATE = GETDATE();
    DECLARE @EndDate DATE = DATEADD(day, 14, @StartDate);
    
    CREATE TEMPORARY TABLE temp_dates (date DATE);
    
    WHILE @StartDate <= @EndDate DO
        INSERT INTO temp_dates Values(@StartDate);
        SET @StartDate = DATEADD(day, 1, @StartDate);
    END WHILE;
    
    SELECT * FROM temp_dates;
    

    Esta consulta crea una tabla temporal llamada “temp_dates” y utiliza un bucle para generar una lista de fechas entre la fecha actual y 14 días en el futuro. El bucle inserta cada fecha en la tabla temporal. Finalmente, la consulta selecciona todas las filas de la tabla temporal, lo que le dará la lista de fechas que necesita.

    Tenga en cuenta que la sintaxis y las funciones utilizadas en esta consulta pueden variar según la versión de Pervasive SQL que esté utilizando.

Comments are closed.