Ayuda con una funcion agregada Sum(DateTime) en un DataTable

18/04/2008 - 01:06 por edcha | Informe spam
estoy tratando de usar la siguiente funcion agregada.
string time = trabajadoresTable.Compute("Sum(DateTime)",
"").ToString();

Necesito sumar todas las horas que estan en la columna "DateTime".
si fueran números la suma mediante
"trabajadoresTable.Compute("Sum(pago)", "")" se efectua bien
pero al ser la columna del tipo DateTime me da el siguiente error


Se generó la excepción System.Data.DataException en el programa:
Uso no válido de la función de agregado Sum() y el tipo: DateTime.

¿como hago para sumar las horas si es del tipo DateTime?


Gracias

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
21/04/2008 - 14:12 | Informe spam
"edcha" wrote in message
news:
estoy tratando de usar la siguiente funcion agregada.
string time = trabajadoresTable.Compute("Sum(DateTime)",
"").ToString();



Eso no puede funcionar. ¿Qué significa una suma de fechas? La operación
de sumar no tiene sentido sobre un campo de tipo "fecha".

Necesito sumar todas las horas que estan en la columna "DateTime".



Si lo que quieres sumar es un número de horas, tienes que hacer previamente
las operaciones necesarias para extraer las horas desde el DateTime a un
campo numérico, y luego hacer la suma de ese campo numérico. Si lo hicieras
sobre un SQL Server pondrías Sum(DatePart(hh,Campo)), pero hasta donde yo
sé, el "Compute" de un DataTable no contiene una función como el DatePart
para sacar las horas desde una fecha, así que tendrás que hacer la operación
desde código tuyo usando un bucle que recorra los registros (en lugar del
"Compute").
Respuesta Responder a este mensaje
#2 edcha
21/04/2008 - 16:08 | Informe spam
Gracias Alberto por tu respuesta solo un asunto mas.

tu me dices que lo siguiente sobre el codigo de abajo
" Eso no puede funcionar. ¿Qué significa una suma de fechas? La
operación de sumar no tiene sentido sobre un campo de tipo "fecha"."


podrías explicarme por favor por que?
ya que si tengo en una columna de tipo DateTime de una tabla 1:30 en
una fila y 5:30 en otra fila la suma de ambos daría 7:00 horas

te hago esta pregunta por quiero aprender

Gracias
Respuesta Responder a este mensaje
#3 Alberto Poblacion
21/04/2008 - 16:40 | Informe spam
"edcha" wrote in message
news:
Gracias Alberto por tu respuesta solo un asunto mas.

tu me dices que lo siguiente sobre el codigo de abajo
" Eso no puede funcionar. ¿Qué significa una suma de fechas? La
operación de sumar no tiene sentido sobre un campo de tipo "fecha".

podrías explicarme por favor por que?



¿Cuál es la suma del 23 de Enero de 2007 más el 2 de Febrero de 2008?
¿Tiene sentido sumar fechas?

ya que si tengo en una columna de tipo DateTime de una tabla 1:30 en
una fila y 5:30 en otra fila la suma de ambos daría 7:00 horas



No puedes tener eso. Si el campo es del tipo DateTime, lo que puedes
tener es, por ejemplo, "El 1 de Enero del año 1 a las 1.30 horas" y "El 1 de
Enero del año 1 a las 7.00 horas", o similar, pero el tipo DateTime siempre
tiene que tener algo en la parte de fecha. Como ves, estas dos cosas en sí
mismas no se pueden sumar. Lo que tú quieres sumar es el resultado de una
operación realizada sobre dichos valores, donde tu operación es "despreciar
la parte de fecha, separar de ella la parte de hora, e interpretarla como
intervalo de tiempo en lugar de punto en el tiempo", que no es lo mismo que
"sumar los dos datetimes".
Respuesta Responder a este mensaje
#4 edcha
21/04/2008 - 18:32 | Informe spam
Gracias por la respuesta Alberto.

¿Significa entonces que tratándose de saber la diferencia o suma de
fechas es mejor no tener columnas DateTime?

por ejemplo una columna donde se guarde el total de horas y minutos
(ej 01:30) trabajadas para al final del mes saber cuanto trabajo la
persona.

o ¿si quiero guardar fechas en una columna para después saber cuanto
tiempo paso de una fecha a otra?


Gracias
Respuesta Responder a este mensaje
#5 Alberto Poblacion
21/04/2008 - 20:19 | Informe spam
"edcha" wrote in message
news:
¿Significa entonces que tratándose de saber la diferencia o suma de
fechas es mejor no tener columnas DateTime?



Para la suma, no. Para la diferencia sí. Así como la "suma de fechas" no
tiene mucho sentido, la "diferencia de fechas" se puede interpretar como "la
duración del intervalo de tiempo transcurrido entre dos fechas". De hecho,
en .Net, si restas dos DateTimes el resultado es un TimeSpan, que representa
el tiempo transcurrido entre las dos fechas.

por ejemplo una columna donde se guarde el total de horas y minutos
(ej 01:30) trabajadas para al final del mes saber cuanto trabajo la
persona.



Si lo vas a hacer con código de .Net, puedes usar el tipo de datos
TimeSpan (en lugar de DateTime) para guardar este tipo de información.

o ¿si quiero guardar fechas en una columna para después saber cuanto
tiempo paso de una fecha a otra?



Ah, entonces sí. Si guardas dos fechas, o tienes una fecha de referencia
y guardas otra, entonces sí que tiene sentido restarlas para saber el tiempo
transcurrido entre ambas. Esta operación de resta (a diferencia de la suma)
funciona tanto entre DateTimes de .Net como entre DateTimes en Sql Server.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida