PDA

Ver la Versión Completa : comparar 1 fecha contra la actual


amadis
28-07-2005, 15:54:39
Deseo comparar la fecha almacenada en un campo DATE sin considerar el año en la BD tengo dd/mm/aaa y deseo compararlo contra la fecha de NOW y verificar si el dd/mm de la base es igual al dd/mm del NOW con que parametros tomo unicamente dd/mm tanto de la base como de la fecha actual??

Desde ya gracias

delphi.com.ar
28-07-2005, 15:55:59
¿Cuál es el motor que estas utilizando?

ContraVeneno
28-07-2005, 16:00:53
la función formatedatetime podría funcionar....

maeyanes
28-07-2005, 16:01:04
Y también desde donde quieres hacer la comparación? Desde código en Delphi o directamente desde un query?

amadis
28-07-2005, 16:29:44
trabajo con una tabla paradox! no hay ningun motor raro solo BDE

Y tengo un query al que le paso el string donde quiero comparar lo del a BD que entra en el query como mun parametro contra el now que lo guardo en otro parametro.

Gracias

hector.roma
28-07-2005, 17:52:51
Si mal no recuerdo esto te puede dar alguna idea...

SELECT ... tus campos ...
FROM tu_tabla
WHERE DATEPART(day, tu_fecha) = DATEPART(day, GETDATE())
AND DATEPART(month, tu_fecha) = DATEPART(month, GETDATE())

...quiero pensar que estas funciones tambien las habrá en Paradox, suerte.

De esta forma no tienes que llegar hasta el Delphi, y lo puedes hacer directamente.

marcoszorrilla
28-07-2005, 17:59:00
Pues con Paradox si es el caso tienes que utilizar:

EXTRACT(Year FROM MiFecha);
EXTRACT(Month FROM MiFecha);
EXTRACT(Day FROM MiFecha);


Un Saludo.

hector.roma
28-07-2005, 18:02:16
Supongo que ahora sólo quedara cambiar los DATEPART por los EXTRACT, con los que marcoszorrilla, nos ha ilustrado (por lo menos a mi).

marcoszorrilla
28-07-2005, 18:05:46
Pues creo que con la idea que te da Hector y el cambio "Paradoxiano", que propongo yo lo resuelvas.

Pero estoy intrigado, porque quieres comparar la fecha de esta manera y porque Now y no Date, en cualquier caso Paradox no admite ninguno de las dos expresiones, así que tendras que guardar antes de utilizar en el SQL el resultado de Date o Now en una variable y luego utilizar ésta en tu SQL.

Un Saludo.

ContraVeneno
28-07-2005, 18:09:49
o hacerlo con la función formatdatetime desde delphi antes de guardarlo en paradox....

amadis
28-07-2005, 18:50:13
NO se cuales son las diferencias de date y now a simplevist me parecieron iguales y use now porque si nomás.

Y si lo tengo almacenado en una variable que luego pasa a ser un param dentro del query.

Lo que necesito es y estoy haciendo es un programa que controle vencimietos cada vez que inicia controla todo lo que vence HOY sin importar el año de inicio del servicio ni que año es hoy. Simplemente me interesa saber que personas tienen vencimiento HOY (DIA/MES).

Desde ya Gracias mañana les cuento como me fue!

marcoszorrilla
28-07-2005, 19:18:34
Para terminar con la última pregunta que haces, Date.- Devuelve la fecha del sistema y Now devuelve la fecha y la hora del sistema.

Un Saludo.

amadis
28-07-2005, 21:32:30
Gracias por la aclaracion de Now y Date!

Respecto de todo lo anterior me da TYME MISMATCH ERROR IN EXPRESSION como si se trataran de tipos de datos distintos...

aqui les dejo el codigo SQL para que lo miren

En la base de datos CLIENTES tengo campos con todos los datos de una persona, CODCLI, NOMBRE, FECHA (que es la fecha de suscripcion y vence cada año) y eso es lo que quiero controlar.



sql_vence.Active := False;

sql_vence.SQL.Clear;
sql_vence.Params.CreateParam(ftDate, 'hoy', ptInput);

sql_vence.ParamByName('hoy').AsDate := DATE;
sql_vence.SQL.Append('Select codcli from clientes');
sql_vence.SQL.Append('WHERE (EXTRACT(Month FROM fecha)) = (EXTRACT(Month FROM :hoy))');
sql_vence.SQL.Append(' AND (EXTRACT(Day FROM fecha)) = (EXTRACT(Day FROM :hoy))');

sql_vence.Active := true;

marcoszorrilla
28-07-2005, 21:54:14
var
MiFecha:TDate;
begin
MiFecha:=Date;

sql_vence.Active := False;

sql_vence.SQL.Clear;
sql_vence.Params.CreateParam(ftDate, 'hoy', ptInput);

sql_vence.ParamByName('hoy').AsDate := MiFecha;
sql_vence.SQL.Append('Select codcli from clientes');
sql_vence.SQL.Append('WHERE (EXTRACT(Month FROM fecha)) = (EXTRACT(Month FROM :hoy))');
sql_vence.SQL.Append(' AND (EXTRACT(Day FROM fecha)) = (EXTRACT(Day FROM :hoy))');

sql_vence.Active := true;

end;

Prueba con este cambio ya que Paradox no reconoce la sentencia Date en su SQL.

Un Saludo.

Patricio
16-12-2006, 16:05:58
Hola quisiera preguntarles si alguno sabe como hacer la consulta comparando el dia/mes de un campo TimesTamp de Interbase6 con el dia/mes actual.

Muchas Gracias

Patricio
16-12-2006, 16:18:44
listo gente como no estaba en la ayuda lo del extract no lo probe, pero buscando en otros foros es con esa funcion. Por ejemplo para tomar el dia...
select extract(day from fnacimiento)
Saludos

amadis
02-02-2007, 03:35:34
Existe alguna forma de hacer un Extract WEEK para comparar la fecha y por ejemplo obtener lso vencimientos de esta semana?