Ver la Versión Completa : Delphi, Acces, Fechas y SQL
cepriego
20-03-2005, 03:22:27
Hola qué tal a todos.
Tengo el siguiente problema, espero alguien pueda ayudarme. Tengo una base de datos Access a la cual accedo desde delphi perfectamente; sin embargo, cuando trato de hacer consultas sql que impliquen el uso de FECHAS todo se vuelve un desastre.
Intento realizar una busqueda entre un rango de fechas y no me devuelve ningun resultado. Por ejemplo
Intente con esto:
SELECT * FROM PROYECTOS WHERE FECHAINICIO BETWEEN #31/08/2004# AND #09/09/2004#
con esto
SELECT * FROM PROYECTOS WHERE FECHAINICIO BETWEEN '31/08/2004' AND '09/09/2004'
Igual las combine y nada.
Alguien sabe como puedo solucionar esto. En ocasiones si me devuelve datos pero son erróneos.
Desde ya agradezco todas sus respuestas:cool:
marcoszorrilla
20-03-2005, 10:39:50
En SQL el formato de fechas es mm/dd/yyyyy. Si utilizas parámetros te ahorras este problema.
Un Saludo.
cepriego
20-03-2005, 20:22:30
Pues mira, ya he intentado igualmente con el formato "mm/dd/yyyy" y no me funciona.
En SQL el formato de fechas es mm/dd/yyyyy. Si utilizas parámetros te ahorras este problema.
Un Saludo.
marcoszorrilla
21-03-2005, 14:52:56
He creado el siguiente ejemplo conectándome con ADO y funciona sin ningún problema.
procedure TForm1.Button1Click(Sender: TObject);
begin
With Adoquery1 do
begin
Close;
Sql.Clear;
Sql.Add('Select * From [Cursos Academia] ');
Sql.Add('Where Inicio between #10/01/2002# and #12/31/2002#');
Sql.Add('Order by Inicio');
ShowMessage(Sql.Text);
open;
end;
end;
Un Saludo.
lroblesco
26-03-2005, 07:37:57
Como ha dicho Marcos el formato es #mm/dd/yyyy#. Yo he usado la misma sentencia y me ha funcionado. Con la aclaracion de que el campo fecha declarado en mi BD es una fecha corta. Intenta esto, sino para es este foro,para preguntar.
Saludos
fecha1:='#31/08/2004#';
fecha2:='#09/09/2004#';
with query do
begin
sql.text:='SELECT * FROM PROYECTOS WHERE FECHAINICIO BETWEEN '+fecha1+' and ' +fecha2+' order by fechainicio';
open;
end;
pepe2000
21-07-2005, 02:15:16
Hola
¿Cual es el procedimiento para utilizar el formato dd/mm/yyyy en las consultas de access; y sin necesidad de cambiar la configuracion del sistema operativo?,
Utilizando parametros sería una forma, pero no hay una manera directa de decirle a access
Select * from tabla where fecha=#24/06/2005#
????
Un saludo y Gracias por anticipado.
ContraVeneno
21-07-2005, 16:36:13
la función formatdatetime podría funcionar
epuigdef
25-07-2005, 12:51:09
Con SQL podemos formatear el campo de la fecha a yyyyMMdd de forma que se puedan comparar como si fueran cadenas. Este truco lo vengo utilizando desde hace mucho tiempo y no me ha dado errores:
select *
from tabla
where format(campo, 'yyyyMMdd') >= format(parametro_ini, 'yyyyMMdd') and
format(campo, 'yyyyMMdd') <= format(parametro_fin, 'yyyyMMdd')
Donde parametro_ini y parametro_fin seran dos parámetros que le puedes pasar al TQuery desde programa.
ContraVeneno
27-07-2005, 00:58:08
format(campo,'ddmmyyyy') no me funciona en SQL Server
me dice que la función format no es un nombre de función conocido....
¿existe algo similiar para SQL Server?
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.