Я работаю с PostgreSQL и у меня есть три переменные в функции и один из них имеет тип date
:месяц и год вместо даты переменной
CREATE OR REPLACE FUNCTION public.fn_reporte_venta_mes(
IN p_fech = date,
IN p_client integer,
IN p_comprobante character
Параметр p_fech
служит для ввода даты PHP в формат «1111-11-11». Вместо этого я хочу только ввести дату месяца и формата года «1111-11». Но я не знаю, как изменить тип данных переменной p_fech
, поскольку, когда я добавляю только день и месяц на PHP, я получаю ошибку совместимости.
Моя полная функция:
CREATE OR REPLACE FUNCTION public.fn_reporte_venta(
IN p_fech date,
IN p_client integer,
IN p_comprobante character)
RETURNS TABLE(nro integer, fecha date, tipo character varying, cliente text, porc_igv numeric, st numeric, igv numeric, total numeric) AS
$BODY$
begin
return query
select v.numero_venta,
v.fecha_venta,
tc.descripcion,
concat(apellido_paterno, ' ', apellido_materno, ' ', nombres) as client,
v.porcentaje_igv,
v.sub_total,
v.igv,
v.total
from venta v
inner join cliente cl on v.codigo_cliente = cl.codigo_cliente
inner join tipo_comprobante tc on v.codigo_tipo_comprobante = tc.codigo_tipo_comprobante
where v.estado = 'E' and
(
case when p_fech = '11-11-1111' then
1 = 1
else
v.fecha_venta = p_fech
end
)
and
(
case when p_client = 0 then
1 = 1
else
cl.codigo_cliente = p_client
end
) and
(
case when p_comprobante = '00' then
1 = 1
else
tc.codigo_tipo_comprobante = p_comprobante
end
)
order by 2;
end
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100
ROWS 1000;
Это поможет объявить вашу версию Postgres и язык, используемый в функции.(SQL, plpgsql или что-то еще?) –
LANGUAGE plpgsql –
Пожалуйста, отредактируйте ваш вопрос с необходимой информацией. 'SELECT version()' сообщает номер версии Postgres. –