Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-12-2003
acrophet acrophet is offline
Miembro
 
Registrado: sep 2003
Posts: 175
Poder: 21
acrophet Va por buen camino
duda sobre un select (sql)

Hola, me gustaria saber como puedo realizar un select que me interesa.
Tengo un campo del tipo Timestamp y necesito que me filtre los registros y solo me muestre los que tengan la fecha > que la del dia de hoy.
He intentado un "select * from tabla where FECHA >'+(date)+'order by NOMBRE", pero me da un error de conversion.
La verdad es que no se muy bien como atacar el asunto.
Espero un poco de luz
Un saludo.
Responder Con Cita
  #2  
Antiguo 10-12-2003
Nelet Nelet is offline
Miembro
 
Registrado: may 2003
Ubicación: Picassent - Valencia
Posts: 95
Poder: 22
Nelet Va por buen camino
prueba con esto:

'select * from tabla where fecha> '+quotedstr(texto del control de fecha)+' order by NAME'
Responder Con Cita
  #3  
Antiguo 10-12-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Además de lo que dice Nelet y de lo que cadetill dirá en un momento asegúrate de que la fecha la das en el formato correcto, dd//mm/aaaa ó mm/dd/aaaa, etc. según la base de datos que utilices.

// Saludos

Última edición por roman fecha: 10-12-2003 a las 18:47:53.
Responder Con Cita
  #4  
Antiguo 10-12-2003
acrophet acrophet is offline
Miembro
 
Registrado: sep 2003
Posts: 175
Poder: 21
acrophet Va por buen camino
Es que el problema me viene precisamente de ahi, si le meto la fecha en la consulta en forma de string, luego no me encuentra nada ya que el campo es del tipo timestamp...
La verdad es que estoy un poco perdido
Responder Con Cita
  #5  
Antiguo 10-12-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
debes hacer un casteo

Código:
'select *
from tabla
where cast(fecha as date) >  '+quotedstr(fecha)+' 
order by NAME'
Responder Con Cita
  #6  
Antiguo 10-12-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Otra opción muy común es usar parámetros, y de esta manera te olvidas del problema de conversiones, ya que son pasados al servidor como parametros tipados.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #7  
Antiguo 12-12-2003
Nelet Nelet is offline
Miembro
 
Registrado: may 2003
Ubicación: Picassent - Valencia
Posts: 95
Poder: 22
Nelet Va por buen camino
Como dice Cadetill tienes que utilizar un cast pero creo que no es donde dice el sino que que quedaría así:

'select * from tabla where fecha>cast('+quotedstr(texto del control de fecha)+' as datetime) order by NAME'

El datetime se utliza en sql-server, si utilizas otro SGBD podría ser de otra forma.


____________________

Folleu..folleu...que el mon s'acaba

____________________
Responder Con Cita
  #8  
Antiguo 12-12-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Hola Nelet

Creo que lo que buscaba el amigo acrophet es sacar todos los registros de una fecha dada (ej.: 10/01/2003). Si tu casteas a DateTime la fecha que pasan por parámetro, el resultado del casteo sería algo así '10/01/2003 00:00:00', por lo que sólo te cogerá los registros que coincidan con ese día/hora. De ahí el casteo al campo de la tabla a formato Date (que almenos en IB/FB devuelve sólo la fecha, sin la hora)
Responder Con Cita
  #9  
Antiguo 12-12-2003
Nelet Nelet is offline
Miembro
 
Registrado: may 2003
Ubicación: Picassent - Valencia
Posts: 95
Poder: 22
Nelet Va por buen camino
La verdad es que hoy estoy un poco espesito a estas horas de la mañana.

Cadetill te daría toda la razón si la condición de la select fuera que campofecha=textofecha, pero creo que siendo la condición campofecha>textofecha (que pienso que es lo que busca acrophet) no importa que esté incluida la hora. Por lo menos en sql-server o access o paradox a mi nunca me ha dado ningún problema al filtrar por rangos de fechas, aunque unos datos incluyan la hora y otros no.

Y el cast lo meto ahí, pq según acrophet el problema le viene al pasar el contenido del control a la select, aunque no se que BD utlizará el (acrophet, hombre, haz el favor de decirnos que BD utilizas), pq con sql-server la select funciona perfectamente con el quotedstr y sin ningún cast.



_________________________

El mon s'acabat, ja no teniu temps de res

_________________________
Responder Con Cita
  #10  
Antiguo 12-12-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Cita:
Nelet comentó:
... pero creo que siendo la condición campofecha>textofecha (que pienso que es lo que busca acrophet) no importa que esté incluida la hora.
Cierto, no me había dado cuenta de este pequeño/gran detalle. Da igual, de esta manera, poner el cast en un lado y otro.

PD: no se quién de los dos está más espesito por la mañana
Responder Con Cita
  #11  
Antiguo 12-12-2003
acrophet acrophet is offline
Miembro
 
Registrado: sep 2003
Posts: 175
Poder: 21
acrophet Va por buen camino
Bueno, al final no he utilizado lo que me habeis puesto , pero me ha ayudado a conseguir lo que buscaba.
Por cierto, utilizo interbase :P
Teniamos varios problemas, que se han comentado por ahi; el tipo de fecha estaba en el formato dd/mm/aaaa hh:mm:ss. A mi solo me interesaba la fecha, no la hora.
para pasarle la fecha en sql, tenemos que cambiarlo al formato mm/dd/aaaa.
Pues bien, para empezar me cree un funcion que me convertia la fecha al formato que necesitaba.
Una vez teniendo esto, aun quedaba el problema de la hora(que no me interesa), pues bien, usando una variable del tipo TDateTime me guardo la fecha de hoy (usando date). Luego echando mano de la funcion int, nos cepillamos la parte decimal del numero(justamente la hora) y guardamos la que nos interesa.
Una vez tenemos esto, simplemente hay que poner la sentencia sql correspondiente:

'select * from tabla where HORA >='+quotedstr(cambiafecha(datetostr(hoy)))+'order by NOMBRE'

Donde cambiafecha es la funcion que convierte los formatos de fecha y hoy es la variable TDateTime donde ya tenemos solamente la fecha y no la hora guardada.

Al final nada de casteos ni nada :P
Un saludo y gracias a todos!! y si a alguien le interesa, pues ya tiene la idea ahi puesta.
Responder Con Cita
  #12  
Antiguo 15-01-2008
gerasA gerasA is offline
Miembro
 
Registrado: ene 2008
Posts: 16
Poder: 0
gerasA Va por buen camino
Cambio de formato de fecha

Hola!
oye perdon pero como cambiaste el formato de la fecha tengo el mismo problema ke tu.
gracias.
Responder Con Cita
  #13  
Antiguo 16-01-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Bienvenido a clubDelphi gerasA

Te invito a leer la guía de estilo que rige estos foros (te ahorrará confusiones y problemas ).

En cuanto a tu duda, usa parámetros en el SQL y que delphi se las arregle con tu motor de bases de datos:
Código Delphi [-]
query1.sql.text := ' select * from tabla where fecha > :Fini'
query1.parambyname('Fini').AsDate := Trunc(datetimepicer1.date);
query1.Open;

El uso de "Trunc" es para quitar la porción de hora.

Como sabrás, el tipo TDateTime es un número real, la parte entera expresa los días que han pasado desde el calendario base (31/12/1899) hasta hoy. La parte fraccionaria, corresponde a los milisegundos que han pasado desde la media noche.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #14  
Antiguo 16-01-2008
gerasA gerasA is offline
Miembro
 
Registrado: ene 2008
Posts: 16
Poder: 0
gerasA Va por buen camino
Hola!
Lo que pasa es que la fecha la captura el usuario en un edit
y lo que quiero es que cambie el formato de la fecha mm/dd/aaaa a dd/mm/aaaa pero no utilizo el datetimepicker, solo quiero saber como hacer la conversión.
Esto es lo que yo hago para hacer la busqueda:
Código Delphi [-]
consulta:='select * from Aluminio where Fecha =';
consulta:=consulta+quotedstr(edit1.Text);
Query1.SQL.Clear;
Query1.SQL.Add(consulta);
Query1.Active;
Query1.Open;
Pero tendria que capturarse en el formato mm/dd/aaaa y yo quiero que lo capture en el formato dd/mm/aaaa.
Gracias
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


La franja horaria es GMT +2. Ahora son las 06:56:06.


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