Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Delphi, Acces, Fechas y SQL (https://www.clubdelphi.com/foros/showthread.php?t=19621)

cepriego 20-03-2005 03:22:27

Delphi, Acces, Fechas y SQL
 
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

Ya lo he hecho
 
Pues mira, ya he intentado igualmente con el formato "mm/dd/yyyy" y no me funciona.

Cita:

Empezado por marcoszorrilla
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.
Código Delphi [-]
 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

Fechas
 
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

Código:


 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

Si, pero...
 
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?


La franja horaria es GMT +2. Ahora son las 16:15:18.

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