Procedimiento almacenado con fecha
Hola, ¿que hay de nuevo?,
tengo el siguiente problemilla, utilizo una base de datos de mysql y estoy haciendo un procedimiento almacenado al que le paso como parametros 2 variable de tipo Datetime. Cuando hago la consulta en el procedimiento tal que así: Código:
select * from tabla where fecha between ',f1,' and ',f2,' Por favor necesito su ayuda. Gracias de antemano.- |
el select supongo que deberá ser algo asi:
y la parte delphi
|
Procedimiento almacenado fecha
Gracias por tu respuesta, pero la verdad es que esa sentencia me sirve para SQL e interbase pero no para Mysql.
Seguiremos investigando, si se te ocurre alguna otra forma ruego me lo comuniques. Muchas gracias por todo.- |
Prueba cambiando
:f1 por ?f1 Mira en el foro y en los trucos casos como este para base de datos MySQL |
De todos modos, cual es el error que te da?
Escribe el mensaje de error y quizás te podamos dar la respuesta exacta que buscas. |
Si bien lo de pasar parámetros creo que es la forma más elegante y legible, puedes también hacerlo de otra manera:
esto generará algo así: Si F1= 01/01/2007 y F2 31/12/2007 23:59:59
Nota: Ten en cuenta que quizás MySQL espere que el formato de la fecha sea diferente. (mm/dd/yyyy o yyyy/mm/dd) |
Procedimiento almacenado con fecha
Siento no haberte respondido antes, pero me surgio otro problemailla que he estado intentando resolver ayer de forma frenetica y que aun no he conseguido solucionar.
Decirte que al final pase los parametros fecha como char(20) para que abarque la fecha y la hora, de la siguiente forma:
ahora mi problema es que cuando lo ejecuto me da el error " Operan should contain 1 column", he estado ojeando por los foros, pero no he conseguido dar con la solución seguiré probando, si se te ocurre algo... Gracias por todo. |
Solucion final
Por si os hace falta el procedimiento es mas facil de lo que yo me pensaba, probe, por si sonaba la flauta y sonó.
La solución es la siguiente:
Gracias por vustra ayuda. |
Parece que el procedimiento almacenado y yo no nos vamos a llevar muy bien.
El procedimiento almacenado es el siguiente aunque ya os lo he detallado. Código SQL [-] DELIMITER $$ DROP PROCEDURE IF EXISTS `aytosantillana`.`prueba` $$ CREATE DEFINER=`root`@`localhost` PROCEDURE `prueba`(IN f1 char(20), IN f2 char(20)) BEGIN SELECT puertos.tag,puertos.dispositivo as disp,valores.fecha,case puertos.numpuerto when 0 then valores.A0 when 1 then valores.A1 when 2 then valores.A2 when 3 then valores.A3 when 3 then valores.A3 when 4 then valores.A4 when 5 then valores.A5 end as valor from equipos,puertos,valores where ((valores.idEquipo=puertos.idEquipo) and (equipos.idEquipo=puertos.idEquipo) and (equipos.idEquipo=valores.idEquipo) and (valores.fecha between f1 and f2 )and (puertos.dispositivo<>'Contador') and (puertos.dispositivo<>'Alimentacion') and (puertos.dispositivo<>'Temperatura') and (puertos.tag<>'')) having (valor<>'') order by puertos.dispositivo asc,valores.idEquipo asc,puertos.numpuerto asc, fecha asc; END $$ DELIMITER ; Bueno cuando ejecuto el procedimiento almacenado desde Mysql no me da ningún problema lo hago de la siguiente forma: Código SQL [-] call prueba (valorf1, valorf2); Ahora bien cuando intento sacar el resultado desde Delphi ( para la conexion a la base de datos Mysql utilizo componentes Zeos), atraves de un Zquery de esta forma: Código:
Zquery.close; Si por el contrario hago la llamada a traves de un componente ZStoredProcedure de la siguiente forma: Código:
Así que aqui estoy que ya no se para donde tirar una ayudta, por favor. Gracias |
La franja horaria es GMT +2. Ahora son las 08:05:13. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi