FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
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.- |
#2
|
||||
|
||||
el select supongo que deberá ser algo asi:
y la parte delphi
|
#3
|
|||
|
|||
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.- |
#4
|
||||
|
||||
Prueba cambiando
:f1 por ?f1 Mira en el foro y en los trucos casos como este para base de datos MySQL |
#5
|
||||
|
||||
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. |
#6
|
||||
|
||||
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) |
#7
|
|||
|
|||
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; Zquery.sql.text:='call prueba(valorf1, valorf2)'; Zquery.open; Si por el contrario hago la llamada a traves de un componente ZStoredProcedure de la siguiente forma: Código:
Z1.StoredProcName := 'prueba'; Z1.ParamByName('f1').AsString := DatetimeToStr(StrTodatetime(datetostr(fecha.Date) + ' ' +'00:00:00')); Z1.ParamByName('f2').AsString := DatetimeToStr(StrTodatetime(datetostr(fecha.Date) + ' ' +'23:59:59')); z1.ExecProc; Así que aqui estoy que ya no se para donde tirar una ayudta, por favor. Gracias |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Procedimiento Almacenado | rodrigo19 | Oracle | 5 | 22-08-2007 22:55:40 |
Fecha modificacion Procedimiento almacenado | lgarcia | SQL | 2 | 28-05-2007 21:33:54 |
Procedimiento Almacenado | pichi Vignola | Firebird e Interbase | 2 | 17-08-2006 01:07:38 |
Procedimiento almacenado y Ado | LucianoRey | MS SQL Server | 11 | 06-07-2004 22:55:23 |
procedimiento Almacenado | Gabriel A Reyes | Conexión con bases de datos | 4 | 19-06-2003 00:14:31 |
|