Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   order by no funciona con datetime... (https://www.clubdelphi.com/foros/showthread.php?t=21423)

User_baja1 17-05-2005 11:44:46

order by no funciona con datetime...
 
Hola a todos,
quiero sacar un listado agrupado por dia, el campo fecha es un dateTime de sql server y a la hora de formar el grupo en QuickReport he puesto un grupo con la expresion="fecha" --> el caso es que no agrupa bien, mas correctamente es que no me crea los grupos el hacer preview.



dado que el campo datetime es un numero real, he probado a eliminar la parte decimal para solo quedarme con el dia,mes,año
asi pues en la query.sql.add(
"select * from tabla order by cast (fecha as Integer) "

el problema es que la query no saca bien ordenados los registros:

38473 2005-05-03 11:35:09.577
38473 2005-05-03 11:43:40.840
38474 2005-05-03 14:07:00.000 <---- es del dia 03/05 y me pone 38474 ?¿?
38474 2005-05-03 15:30:00.000 <---- es del dia 03/05 y me pone 38474 ?¿?
38474 2005-05-03 16:45:40.030 <---- es del dia 03/05 y me pone 38474 ?¿?
38474 2005-05-03 18:00:00.000 <---- es del dia 03/05 y me pone 38474 ?¿?
38474 2005-05-04 08:30:00.000
38474 2005-05-04 09:52:07.983
38474 2005-05-04 10:08:07.217
38474 2005-05-04 11:19:12.967

por lo que en el listado lo obtengo mal ordenados.

Ademas:

No se como decirle al QRGroup que la expresion es para agrupar por dia, ya que no me crea grupos por dia, simplemente crea uno y me saca todos los registros colgados de el.


¿Sabeis como se agrupa por dia en un informe de QR5 con un campo fecha de tipo DateTime???


Gracias,david.


User_baja1 17-05-2005 12:37:17

error por culpa del redondeo...
 
Ya se porque es, es por culpa del redondeo ya que si uso la funcion:


select round( cast(fecha as money) ,0,1) as dia, * from tabla
order by round( cast(hora_inicio as money) ,0,1), etc

funciona bien.
1º paso la fecha (dateTime) a numero con 4 decimales
2º trunco el valor con round(dato,0,1)


nota:
si pongo cast(fecha as numeric) no va bien ya que redondea





Cita:

Empezado por davazro
Hola a todos,
quiero sacar un listado agrupado por dia, el campo fecha es un dateTime de sql server y a la hora de formar el grupo en QuickReport he puesto un grupo con la expresion="fecha" --> el caso es que no agrupa bien, mas correctamente es que no me crea los grupos el hacer preview.



dado que el campo datetime es un numero real, he probado a eliminar la parte decimal para solo quedarme con el dia,mes,año
asi pues en la query.sql.add(
"select * from tabla order by cast (fecha as Integer) "

el problema es que la query no saca bien ordenados los registros:

38473 2005-05-03 11:35:09.577
38473 2005-05-03 11:43:40.840
38474 2005-05-03 14:07:00.000 <---- es del dia 03/05 y me pone 38474 ?¿?
38474 2005-05-03 15:30:00.000 <---- es del dia 03/05 y me pone 38474 ?¿?
38474 2005-05-03 16:45:40.030 <---- es del dia 03/05 y me pone 38474 ?¿?
38474 2005-05-03 18:00:00.000 <---- es del dia 03/05 y me pone 38474 ?¿?
38474 2005-05-04 08:30:00.000
38474 2005-05-04 09:52:07.983
38474 2005-05-04 10:08:07.217
38474 2005-05-04 11:19:12.967

por lo que en el listado lo obtengo mal ordenados.

Ademas:

No se como decirle al QRGroup que la expresion es para agrupar por dia, ya que no me crea grupos por dia, simplemente crea uno y me saca todos los registros colgados de el.


¿Sabeis como se agrupa por dia en un informe de QR5 con un campo fecha de tipo DateTime???


Gracias,david.




La franja horaria es GMT +2. Ahora son las 17:23:26.

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