Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Consulta por fecha en SQL?

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Consulta por fecha en SQL? Responder citando

Hola, no sé si aqui me podreis ayudar, necesito averiguar con 15 dias de antelación las fechas de cumpleaños de una base de datos hecha en Access.
Me explico, el usuario necesita sacar un listado de los cliente que van a cumplir años desde el dia de hoy y 15 dias en adelante.
El problema es que el campo tiene que ser de tipo texto en la base de datos. Aun poniendolo como Fecha, la instrucción no funciona. Pero el campo tiene que ser texto.

Select *
From Tabla
Where Fecha_Nacimiento =Date()+15

¿Me podeis ayudar?
Os estaría muy agradecido
Gracias de antemano
Volver arriba
Mensaje    Asunto: jaquemate Responder citando

Si he entendido bien, el campo de la fecha ha de ser de tipo texto. No sé muy bien, porqué pero en fin. No sé si sabrás que si quieres ordenar una tabla o consulta por este campo y este está en formato texto, ha de ser con el siguiente formato: YYYYMMDD (es decir: año, mes y día) ya que si el formato fuese DDMMYYYY, te ordenaría primero por el día, luego por el mes y por último por el año ya que a la hora de ordenar por un campo de tipo texto se ordena conforme a la tabla ASCII.

Según esto, el código sería:

Código:
AnsiString consulta = "select * from tabla where fecha_nacimiento = '" + FormatDateTime("yyyymmdd",Date() + 15) + "'";


Pero esto tampoco te serviría, ya que te buscaría los clientes que cumplen años dentro de quince días justos, pero no los que van a cumplir años mañana por ejemplo. Por esta razón, la consulta correcta sería:

Código:
AnsiString consulta = "select * from tabla where fecha_nacimiento >= '" + FormatDateTime("yyyymmdd",Date()) + "' and fecha_nacimiento <= '" + FormatDateTime("yyyymmdd",Date() + 15) + "'";


Un saludo.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
Mensaje    Asunto: Responder citando

Agradezco mucho tu contestación tan rápida. Ahora voy a probarlo.

En realidad el campo es de tipo texto porque no he conseguido controlar los errores que me daba la base de datos cuando introducían algo que no aceptase el campo fecha. Tengo un table, navigator y Datasource.
Por si alguien sabe como hacerlo, pero si cambio el formato ya no me valdría tu solucion verdad?
Volver arriba
Mensaje    Asunto: Fechas en SQL Responder citando

También puedes usar la función DecodeDate para incluir la fecha en el código. Por lo que yo entiendo quieres encontrar los nacidos entre, por ejemplo, hoy 4 de abril y el 19 de abril ambos inclusive.
Código:

#include <stdio.h>

Word Day, Month, Year
char Desde[11] = "\0";
char Hasta[11] = "\0";

DecodeDate(Date(), Year, Month, Day);
sprintf(Desde, "%02d/%02d/%04d", Month, Day, Year);
DecodeDate(Date() + 15, Year, Month, Day);
sprintf(Hasta,"%02d/%02d/%04d", Month, Day, Year);

Esto sería si guardas las fechas con formato dd/mm/aaaa. Si guardas con formato dd/mm/aa la conversión de fechas sería:
Código:

char Desde[9] = "\0";
char Hasta[9] = "\0";

DecodeDate(Date(), Year, Month, Day);
sprintf(Desde, "%02d/%02d/%02d", Month, Day, Year%100);
DecodeDate(Date() + 15, Year, Month, Day);
sprintf(Hasta,"%02d/%02d/%02d", Month, Day, Year%100);

El formato de la instrucción sprintf dependería del formato en que guardes la fecha. Y la instrucción SQL te quedaría de la siguiente forma:
Código:

SELECT * FROM Tabla
 WHERE Fecha_Nacimiento BETWEEN ‘" + AnsiString(Desde) + "’ AND ‘" + AnsiString(Hasta)
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.