Consulta SQL para obtener la diferencia entre el parámetro de fecha y calcular la semana.
Cuando pasamos la fecha de inicio y la fecha de finalización en el parámetro, tengo que calcular la diferencia y si la diferencia es igual a 7, debería retornar 1,
si es 14, entonces 2 y si es 21, entonces 3, y así sucesivamente.
select person_number,
amount *
case when( :p_to_date - :p_from_date) =6
then 1
else ( :p_to_date - :p_from_date) >6 and ( :p_to_date - :p_from_date) <=14
then 2
else ( :p_to_date - :p_from_date) >14 and ( :p_to_date - :p_from_date) <=21
then 3
else ( :p_to_date - :p_from_date) >21 and ( :p_to_date - :p_from_date) <=28
then 4
end as week
from
per_all_people_F papf
¿Es correcta la lógica mencionada anteriormente?
davy.ai
No, la lógica anterior no es correcta. La sintaxis de la instrucción CASE está incorrecta. La sintaxis correcta sería:
Este código calculará la diferencia entre la fecha de inicio y la fecha de finalización utilizando el operador de resta y luego comprobará si es igual a 7, 14 o 21. Si lo es, devolverá el valor correspondiente (1, 2 o 3). Si no coincide con ninguna de las condiciones, devolverá NULL.