Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-11-2008
Avatar de salvica
salvica salvica is offline
Miembro
 
Registrado: mar 2004
Ubicación: Albacete (España) ... En un lugar de la Mancha ...
Posts: 304
Poder: 21
salvica Va por buen camino
Cita:
Empezado por ContraVeneno Ver Mensaje
¿y si utilizas "between" no funciona?

Código Delphi [-]with unQuery do begin .. SQL.Add('Where Fecha between :FechaAyer and :FechaManana'); ... ParamByName('FechaManana').AsDateTime := MI_FECHA+1; ParamByName('FechaAyer').AsDateTime := MI_FECHA-1; ...
Hola ContraVeneno, el problema no es la fecha, sino que debe recoger solo desde las 21:00:00 de ayer hasta las 00:00:00 de mañana (era parte de la condición del ejemplo)

Saludos
salvica
Responder Con Cita
  #2  
Antiguo 24-11-2008
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 24
ContraVeneno Va por buen camino
Cita:
Empezado por salvica Ver Mensaje
Hola ContraVeneno, el problema no es la fecha, sino que debe recoger solo desde las 21:00:00 de ayer hasta las 00:00:00 de mañana (era parte de la condición del ejemplo)

Saludos
salvica
ya, vaya:

Código Delphi [-]
Var FechaAyer, FechaManana: TDateTime;
 ...
 FechaAyer := EncodeDateTime(YearOf(Fecha-1), MonthOf(Fecha-1), DayOf(Fecha-1), 21, 00, 00);
...
 SQL.Add('Where Fecha between :FechaAyer and :FechaManana');
 ParamByName('FechaAyer').AsDateTime := FechaAyer
 ...
__________________

Responder Con Cita
  #3  
Antiguo 24-11-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
...pero en la hora 0:00:00 ya ha cambiado la fecha, es una lata andar con fecha de hoy, de mañana, etc...

No te vale algo así: fecha = :fecha and (hora between :hora1 and hora2)
En hora1 le pasas 21:00 (formato time), y en hora2 le pasas 23:59:59.999

Así usas un parámetro de fechas menos.


Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #4  
Antiguo 24-11-2008
Avatar de salvica
salvica salvica is offline
Miembro
 
Registrado: mar 2004
Ubicación: Albacete (España) ... En un lugar de la Mancha ...
Posts: 304
Poder: 21
salvica Va por buen camino
Perdonar la tardanza, estaba probando lo anterior
Código SQL [-]
       SQL.Add( ' WHERE fecha BETWEEN :FechaAyer AND :FechaManana' );
       SQL.Add( '   AND DATE_FORMAT(hora, "%i:%s")="00:00"' );
       SQL.Add( ' ORDER BY clave' );
       ParamByName('FechaAyer').AsDateTime   := EncodeDateTime(YearOf(FECHA-1), MonthOf(FECHA-1), DayOf(FECHA-1), 23, 0, 0, 0);
       ParamByName('FechaManana').AsDateTime := EncodeDateTime(YearOf(FECHA+1), MonthOf(FECHA+1), DayOf(FECHA+1),  0, 0, 0, 0);
No funciona , me coge los tres días enteros
Responder Con Cita
  #5  
Antiguo 24-11-2008
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 24
ContraVeneno Va por buen camino
mmmkelas, pues entonces no entendí lo que estas buscando... déjame darle otra leída.
__________________

Responder Con Cita
  #6  
Antiguo 24-11-2008
Avatar de salvica
salvica salvica is offline
Miembro
 
Registrado: mar 2004
Ubicación: Albacete (España) ... En un lugar de la Mancha ...
Posts: 304
Poder: 21
salvica Va por buen camino
Mira contraveneno, tengo unas tablas que contienen datos recogidos de unos sensores, por lo que vienen en formato Fecha, Hora, Valor y Calidad, por eso lo de consultar en unas horas determinadas. Parece ser que con el ParamByName se resuelve (o lo he reuelto) así:
Código SQL [-]
       SQL.Add( ' WHERE (    (fecha = :FechaAyer   AND HOUR(hora)=21)' );
       SQL.Add( '         OR (fecha = :FechaHoy)' );
       SQL.Add( '         OR (fecha = :FechaManana AND HOUR(hora)= 0)' );
       SQL.Add( '       ) AND DATE_FORMAT(hora, "%i:%s")="00:00"' );
       SQL.Add( ' ORDER BY clave' );
       ParamByName('FechaAyer').AsDateTime   := Trunc(FECHA_PRESION-1);
       ParamByName('FechaHoy').AsDateTime    := Trunc(FECHA_PRESION);
       ParamByName('FechaManana').AsDateTime := Trunc(FECHA_PRESION+1);
La parte DATE_FORMAT(hora, "%i:%s")="00:00"' ) es la que me deja cojer los valores de las "horas en punto"

Gracias a todos
Salvica
Responder Con Cita
  #7  
Antiguo 24-11-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Editaaaaaado otra vez:

Pues entre tu última repuesta y esto, creo que vamos volando

Sí que hay que darle vueltas al tema jeje.
Código Delphi [-]
 SQL.Add( ' WHERE ( ');
  SQL.Add( '         ((fecha between :FechaAyer and :FechaAyer + 1)  AND (Hour(hora) between 21 and 23))' ); //ayer y hoy entre las 21 y 23
  SQL.Add( '         OR ((fecha between :FechaAyer +1 and FechaAyer +2) AND (HOUR(hora)= 0))' ); // hoy y mañana a las 0:00
  SQL.Add( '       )');
 SQL.Add( ' AND (DATE_FORMAT(hora, "%i:%s")="00:00")');
 SQL.Add( ' ORDER BY psensor.clave' );
   ParamByName('FechaAyer').AsDate := trunc(MI_FECHA);

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 24-11-2008 a las 18:57:02. Razón: no pillaba la fecha de hoy de las 0:00
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
ParamByName en ADO silviodp Tablas planas 5 12-01-2008 12:50:01
Problema con Parambyname y dataset Rockin Firebird e Interbase 4 12-10-2007 00:10:47
datetimerpicker-parambyname-SQL server 2000 DarkGirl MS SQL Server 13 15-08-2007 23:39:09
Problemas con ParamByName Memo ramonibk MS SQL Server 2 14-09-2004 13:15:26
Insert y parambyname Dantael SQL 1 17-11-2003 08:50:24


La franja horaria es GMT +2. Ahora son las 02:09:02.


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
Copyright 1996-2007 Club Delphi