FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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 |
#2
|
|||
|
|||
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; Saludos. |
#3
|
|||
|
|||
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.
|
#4
|
|||
|
|||
Muchas gracias Afxe por tu referencia tienes razón y converti el valor de la fecha que estoy formateando con la funcion CDate
Saludos |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
|