Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Problema, no ordena por fechas :( (https://www.clubdelphi.com/foros/showthread.php?t=61780)

tonycol1984 21-11-2008 17:11:20

Problema, no ordena por fechas :(
 
hola, que tal? Disculpen, tengo un problema.... Lo que pasa es que tengo en el query la parte de "ORDER BY Fecha DESC", pero no lo organiza bien del todo. Lo que pasa es que genero reportes por fecha de toda la info que tengo en mi sistema, y por ejemplo, para ventas, si tengo 4 ventas y quiero que sean mostrados acomodados x fecha en el siguiente orden: 23/08/2008, 12/10/2008, 19/10/2008 y 06/11/2008... me los muestra de esta forma: 23/08/2008, 19/10/2008, 12/10/2008 y 06/11/2008. O sea que el mes esta ordenado de forma correcta, pero el dia de forma inversa, y por ejemplo para mostrar el inventario por fecha, es lo mismo, aparte de que los ultimos registros estan en desorden... no se que hacer, mis tablas son paradox y uso queries para acomodar este business... Es lo único que me falta para terminar mi sistema, alguna ayuda? jajaja se los agradeceria de todo corazón :D

Saludos!

ToNyCoL...

hecospina 21-11-2008 17:22:40

Hola
Estas seguro que este campo es de tipo DATE, segun lo que puedo ver con tu ejemplo es de tipo texto :confused:

Alexandro 21-11-2008 19:48:36

Creo que hecospina tiene razón, deberias ver que el campo es DATE y no ALPHA. Cualquier duda nos informas

salvica 23-11-2008 17:38:09

También puedes utilizar:
Código SQL [-]
   ORDER BY DATE_FORMAT(fecha, "%Y%m%d")
Donde:
fecha -> el campo fecha de tu tabla
%Y ---> el año con cuatro dígitos
%m ---> el mes con dos dígitos
%d ---> el día con dos dígitos
Saludos
Salvica

tonycol1984 24-11-2008 18:12:39

Hola, ya encontré la solución
 
Gracias a todos por haberme ayudado, primero que nada los tenia tipo alpha (y no recuerdo porque los tenia de tipo alpha :P), pero total que los cambie a date y ahora me seguía marcando otro error en type mismatch o algo asi.... Ah! porque para mostrar solo los reportes entre el rango de fecha, los almaceno en una tabla temporal, y al llenar esa tabla me marcaba error con el query en la parte "WHERE Fecha LIKE '20/12/2008'"... Lo primero que hice fue cambiar la configuracion regional en la computadora, para que fuera como la notacion en ingles (12/20/2008) y no funcionaba tampoco, ademas, pues... ni modo que tuviera la fecha como los americanos la leen si el software va a ser usado en mexico, verdad? :P Así que lo que hice fue volver a ponerla como es en latinoamerica y en el query si la buscaba como la americana, ya aparte en vez de "LIKE" escribi "=" y ahora sí ya salió. Entonces el query quedo así:

SELECT * FROM tabla
WHERE Fecha = "12/20/2008"

Y ya en el qreport me muestra la fecha normal (20/12/2008)... Esta raro, no? Es un show con eso de los formatos, pero al fin lo logre :P Saludos a todos y gracias ñ_ñ

hecospina 24-11-2008 20:39:41

Hola
Debes tener en cuenta que LIKE solo funciona para campos que sean de tipo texto, no te van a funcionar para campos numericos ni para fecha, por eso era el error que te marcaba
Lo del formato de fecha es extraño, lo importante es que funcione :)

Lepe 24-11-2008 21:54:27

Es muy normal que el motor use el formato de fecha mm/dd/yyyy, algulnos motores si pones 02/01/2008 pueden interpretar tanto el 1 de febrero como el 2 de enero, lo mejor es usar parámetros:
Código Delphi [-]
query1.sql.text := 'select * from fecha where fecha = :mifecha';
query1.parambyname('mifecha').AsDate := trunc (datetimepicker1.date);
query1.Open;

// otra forma:
query1.sql.text := 'select * from fecha where fecha between fechaini and :fechaFin';
query1.parambyname('fechaini').AsDate := trunc (datetimepicker1.date);
query1.parambyname('fechaFin').AsDate := trunc (datetimepicker2.date);
query1.Open;


Si un campo es numérico, puedes usar un truco:
Código SQL [-]
select * from tabla 
where cast(camponumerico as varchar(100)) like '%32%'
Creo que funcionaría aunque no lo he probado.

Saludos


La franja horaria es GMT +2. Ahora son las 21:24:20.

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