Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Tablas planas (https://www.clubdelphi.com/foros/forumdisplay.php?f=20)
-   -   Problema con rango de fecha (https://www.clubdelphi.com/foros/showthread.php?t=24374)

JavierO 18-08-2005 02:28:01

Problema con rango de fecha
 
Hola a todos:

tengo un problema al realizar la consula de una fecha en Access 2000

SELECT peci_c.peci_anio, peci_c.peci_numero
FROM sil_periodos_cierre peci_c
WHERE peci_c.peci_tipo = 'CON'
AND '19/07/2004' >= format(peci_c.peci_fecha_inicio,'dd/mm/yyyy')
AND '19/07/2004' <= format(peci_c.peci_fecha_fin,'dd/mm/yyyy')

necesito que que encuentre el rango para la fecha que le estoy pidiendo pero me trae todos los valores

peci_anio

peci_numero

peci_c.peci_fecha_inicio

peci_c.peci_fecha_fin

2004

1

01/01/2004

31/01/2004

2004

2

01/02/2004

29/02/2004

2004

3

01/03/2004

31/03/2004

2004

4

01/04/2004

30/04/2004

2004

5

01/05/2004

31/05/2004

2004

6

01/06/2004

30/06/2004

2004

7

01/07/2004

31/07/2004

2004

8

01/08/2004

31/08/2004

2004

9

01/09/2004

30/09/2004

2004

10

01/10/2004

31/10/2004

2004

11

01/11/2004

30/11/2004

2004

12

01/12/2004

31/12/2004



y el valor que me deberia de mostrar es 2004 y 7

ya tambien lo hice con between y tampoco lo hace

si tienen alguna idea de como hacerlo o de porque no me muestra los datos, les voy agracecer sus comentarios

afxe 18-08-2005 10:04:06

Comparas string con fechas....
 
No he trabajado con Access 2000, pero me da la impresion que la comparacion de strings que estás haciendo no tiene mucha lógica, ya que las fechas y los string tienen diferente cardinalidad (ordenacion). Normalmente suelo usar parametros para comparaciones de fecha, para evitar diferencias en el formato que use la base de datos instalada en el cliente:

Código:


with MiQry do begin
  Sql.Clear;
  Sql.Add(' SELECT peci_c.peci_anio, peci_c.peci_numero ');
  Sql.Add('  FROM sil_periodos_cierre peci_c ' );
  Sql.Add('WHERE peci_c.peci_tipo = ''CON'' ');
  Sql.Add('  AND peci_c.peci_fecha_inicio <= :Fec1 ');
  Sql.Add('  AND peci_c.peci_fecha_fin >= :Fec2 ');
  ParamByName('Fec1').AsDateTime := StrToDate('19/07/2004');
  ParamByName('Fec2').AsDateTime := StrToDate('19/07/2004');
  Open;
end;

Según la consulta que has enviado saldrían todos los registros en cuyo periodo esté contenida la fecha 19 de julio del 2004, independientemente del año en que empiecen o terminen.

Saludos.

afxe 18-08-2005 10:11:38

Una aclaración mas:
 
Si no te funciona lo anterior o no quieres complicarte con parametros, compara las fechas usando el formato Año-mes-día: 2004-07-19, ya que el problema que estás teniendo es que el '19-07-2004' es, efectivamente, anterior al '31-03-2004' ya que por orden alfabético, el 1 (primer caracter de la primera fecha) es menor que el 3 (primer caracter de la segunda fecha). Dicho de otra manera, si comparas string, al procesador le da igual que sea una fecha o la combinación de tu caja fuerte.Otra vez saludos.

JavierO 19-08-2005 23:32:45

Muchas gracias Afxe por tu referencia tienes razón y converti el valor de la fecha que estoy formateando con la funcion CDate

Saludos


La franja horaria es GMT +2. Ahora son las 03:59:13.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi