Hola amigos....
Estoy trabajando con Firebird 2.0 y delphi 6
Estoy tratando de ejecutar este query:
Código SQL
[-]
select LPAD(a.registro_id,6,'0') as registro_id,
LPAD(a.folio_ticket_comanda,6,'0') as ticket,
a.registro_id as registro_id2,
current_date as fecha_hora_impresion,
a.mesa_num||COALESCE(a.literal,'') as mesa,
CASE
when current_time>=cast('13:00:00' as time) THEN a.fecha_hora_registro
else CAST( a.fecha_hora_registro as DATE )
end as fecha_sin_hora,
b.cantidad,
b.consec,
case b.cortesia
when 'S' then b.precio*-1
when 'N' then b.precio
end as precio,
b.comentario,
CASE b.cortesia
when 'S' then RTRIM( UPPER(c.prod_descripcion_corta) )||'-[CORTESIA]'
when 'N' then RTRIM(UPPER(c.prod_descripcion_corta))
end||' '||COALESCE(b.comentario,'') as prod_descripcion_corta,
b.descripcion_producto,
b.cortesia,
UPPER((select d.alias_nombre
from empleado d, asignacion_mesa e
where d.empleado_id=e.empleado_id
and e.mesa_num=a.mesa_num)) as mesero,
f.um_descripcion_corta,
h.descripcion as clasificacion
from comanda_maestro a,
comanda_detalle b,
producto c,
unidad_medida f,
categoria_producto g,
clasif_categoria_producto h
where a.registro_id=b.registro_id
and a.registro_id=:registro_id
and b.producto_id=c.producto_id
and c.um_id=f.um_id
and c.categoria_id=g.categoria_id
and g.id_clasificacion=h.id_clasificacion
order by h.descripcion
Les explico que quiero hacer: El cliente me pidio que en el ticket de una comanda, saliera impreso la hora siempre y cuando fuera mas de 1 pm (13:00:00) y que no se imprima si la hora es menor a la 1 p.m.
El problema esta aqui:
Código SQL
[-] CASE
when current_time>=cast('13:00:00' as time) THEN a.fecha_hora_registro
else CAST( a.fecha_hora_registro as DATE )
end as fecha_hora,
.... marca este error:
Código SQL
[-]
Dynamic SQL Error.
SQL error code = -104.
Datatypes are not comparable in expression CASE.
Parece ser que la sentencia CASE no soporta este tipo de consultas en su estructura con la version de Firebird q estoy usando. Lo puedo solucionar creando un campo que solo almacene la fecha y el otro campo -que la tengo creado que por cierto es del tipo Timestamp- lo dejaria tal cual...y entonces lo resolveria con la sentencia case, pero en realidad quiero agotar esta opción, si no se puede usando case...pues ni modo creare el campo
Alguna otra idea de como se pudiera solucionar??.
Saludos.