Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-04-2008
astarett astarett is offline
Registrado
 
Registrado: abr 2008
Posts: 4
Poder: 0
astarett Va por buen camino
Question Cálculos con fechas

Que tal amigos! Veo que hay muchos Gurus por aqui en SQL, yo llevo poco tiempo y aun no entiendo muchas cosas "avanzadas" Ahorita tengo un problema ojala puedan ayudarme.

Tengo dos fechas de ordenes de compra una cuando el cliente la pide a un proveedor y una cuando el proveedor aceptó la orden de compra. Las fechas están en dos tablas diferentes una se llama OrdenCompra y otra se llama BitacoraTransaccion.

Los campos donde se encuentran las fechas son

OrdenCompra.ocp_FechaRealizada Esta contiene la fecha en que se realizó
la orden de compra.

BitacoraTransaccion.btr_FeEstado Esta contiene la fecha cuando cambio del
estado de revisada a aceptada


La consulta que hago es la siguiente:

Código SQL [-]
 
Select OrdenCompra.ocp_FechaRealizada,
BitacoraTransaccion.btr_FeEstado
from OrdenCompra, BitacoraTransaccion
where OrdenCompra.ocp_FechaRealizada between '2008-04-01' and '2008-04-30' 
and BitacoraTransaccion.btr_FeEstado between '2008-04-01' and '2008-04-30'
and (BitacoraTransaccion.EstadoOperacionID = 13 or BitacoraTransaccion.EstadoOperacionID = 24)
and OrdenCompra.EstadoOperacionID = 1

Cuando OrdenCompra.EstadoOperacionID = 1 Quiere decir que la acaba de
realizar el cliente
Cuando EstadoOperacionID = 24 o 13 es un estatus de que ha sido
aceptada la orden de compra

Y me trae los resultados que quiero algo asi:

OrdenCompra.ocp_FechaRealizada BitacoraTransaccion.btr_FeEstado
2008-04-06 20:22:37.000 2008-04-07 11:52:54.000
2008-04-06 21:19:00.000 2008-04-08 14:19:21.000
2008-04-06 22:00:15.000 2008-04-07 08:50:51.000


Ahora lo que quiero hacer es calcular el tiempo en horas que se tardo el proveedor en aceptar la orden de compra desde que se Realizo la orden de compra, pero de cada una de las fechas mostradas, ya que cada fecha pertenece a una unica orden de compra diferente de la otra.

Tengo un script donde puedo calcular eso, pero solo comparando dos fechas, una contra otra, y si tuviera 100 fechas para comparar me tardaria horas. En si lo que quiero es que se puedan comparar todas las fechas y me de el resultado de cada comparación.

Alguien sabe como? Agradezco su ayuda señores.
Responder Con Cita
  #2  
Antiguo 23-04-2008
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 26
BlueSteel Va por buen camino
Cool

Cita:
Empezado por astarett Ver Mensaje
Que tal amigos! Veo que hay muchos Gurus por aqui en SQL, yo llevo poco tiempo y aun no entiendo muchas cosas "avanzadas" Ahorita tengo un problema ojala puedan ayudarme.

Tengo dos fechas de ordenes de compra una cuando el cliente la pide a un proveedor y una cuando el proveedor aceptó la orden de compra. Las fechas están en dos tablas diferentes una se llama OrdenCompra y otra se llama BitacoraTransaccion.

Los campos donde se encuentran las fechas son

OrdenCompra.ocp_FechaRealizada Esta contiene la fecha en que se realizó
la orden de compra.

BitacoraTransaccion.btr_FeEstado Esta contiene la fecha cuando cambio del
estado de revisada a aceptada


La consulta que hago es la siguiente:


Código SQL [-]
Select OrdenCompra.ocp_FechaRealizada,
BitacoraTransaccion.btr_FeEstado
from OrdenCompra, BitacoraTransaccion
where OrdenCompra.ocp_FechaRealizada between '2008-04-01' and '2008-04-30'
and BitacoraTransaccion.btr_FeEstado between '2008-04-01' and '2008-04-30'
and (BitacoraTransaccion.EstadoOperacionID = 13 or BitacoraTransaccion.EstadoOperacionID = 24)
and OrdenCompra.EstadoOperacionID = 1





Cuando OrdenCompra.EstadoOperacionID = 1 Quiere decir que la acaba de
realizar el cliente
Cuando EstadoOperacionID = 24 o 13 es un estatus de que ha sido
aceptada la orden de compra

Y me trae los resultados que quiero algo asi:

OrdenCompra.ocp_FechaRealizada BitacoraTransaccion.btr_FeEstado
2008-04-06 20:22:37.000 2008-04-07 11:52:54.000
2008-04-06 21:19:00.000 2008-04-08 14:19:21.000
2008-04-06 22:00:15.000 2008-04-07 08:50:51.000


Ahora lo que quiero hacer es calcular el tiempo en horas que se tardo el proveedor en aceptar la orden de compra desde que se Realizo la orden de compra, pero de cada una de las fechas mostradas, ya que cada fecha pertenece a una unica orden de compra diferente de la otra.

Tengo un script donde puedo calcular eso, pero solo comparando dos fechas, una contra otra, y si tuviera 100 fechas para comparar me tardaria horas. En si lo que quiero es que se puedan comparar todas las fechas y me de el resultado de cada comparación.

Alguien sabe como? Agradezco su ayuda señores.

Hola astarett

Primero que nada, Bienvenido al Club... Te invito a leer la guia de estilo

Te aconcejo que no dupliques tus hilos, ya que estos pueden ser ignorados...

Salu2
__________________
BlueSteel
Responder Con Cita
  #3  
Antiguo 23-04-2008
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.740
Poder: 26
ContraVeneno Va por buen camino
SQL Server tiene la función "DateDiff" la cuál te da la diferencia desde años hasta milisegundos, según lo que escojas.

Pero como no mencionas que motor de base de datos estas utilizando, pues no sabría decir más opciones.
__________________

Responder Con Cita
  #4  
Antiguo 23-04-2008
astarett astarett is offline
Registrado
 
Registrado: abr 2008
Posts: 4
Poder: 0
astarett Va por buen camino
Sobre el calculo de fechas.

Cita:
Empezado por ContraVeneno Ver Mensaje
SQL Server tiene la función "DateDiff" la cuál te da la diferencia desde años hasta milisegundos, según lo que escojas.

Pero como no mencionas que motor de base de datos estas utilizando, pues no sabría decir más opciones.
Gracias ContraVeneno, uso SQL Server 2000, y esa funcion DateDiff la uso, pero lo que pasa es que solo puedo hacer con esa función una comparación con 2 fechas, y lo que quiero en realidad es hacer la comparacion con todas las fechas que me traiga la consulta previa que hice. Ejemplo, si tengo 2 pares de fechas para comparar 2008-01-01 2088-03-14 comparar esa, y luego el par que sigue, y asi sucesivamente con todas las fechas que me arroje la consulta.

Agradezco tu atención.
Responder Con Cita
  #5  
Antiguo 23-04-2008
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.740
Poder: 26
ContraVeneno Va por buen camino


Pues no le veo lo complicado y no se porque dices que no te funciona...

Código SQL [-]
Select U.UnaFecha, O.OtraFecha, datediff(ff, U.unafecha, O.otrafecha) as DiferenciaEnHoras
From unaTabla U
join otraTabla O on U.ID = O.ID
where U.UnaFecha between '2008-01-01 00:00:00' and '2008-01-30 23:59:59'
Order by U.UnaFecha

Esa consulta me compara una fecha contra la otra cada vez. Si son 20 fechas, me compara 20 veces. Si es una, me compara una, si son 3, pues 3.
__________________

Responder Con Cita
  #6  
Antiguo 24-04-2008
astarett astarett is offline
Registrado
 
Registrado: abr 2008
Posts: 4
Poder: 0
astarett Va por buen camino
Cita:
Empezado por ContraVeneno Ver Mensaje


Pues no le veo lo complicado y no se porque dices que no te funciona...

Código SQL [-]Select U.UnaFecha, O.OtraFecha, datediff(ff, U.unafecha, O.otrafecha) as DiferenciaEnHoras From unaTabla U join otraTabla O on U.ID = O.ID where U.UnaFecha between '2008-01-01 00:00:00' and '2008-01-30 23:59:59' Order by U.UnaFecha


Esa consulta me compara una fecha contra la otra cada vez. Si son 20 fechas, me compara 20 veces. Si es una, me compara una, si son 3, pues 3.
Pues gracias por la ayuda, algo tiene el SQL server de mi empresa porque en casa lo probe y si me compara todas las fechas, esta raro ese asunto. Gracias por la ayuda amigo.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
slq entre dos fechas comparar fechas taru MySQL 2 30-07-2007 16:10:36
Una de fechas ...? kia Firebird e Interbase 7 11-10-2006 21:05:10
Fechas en sql carymar SQL 2 15-06-2006 18:35:10
Las horribles fechas, control de fechas Huer OOP 6 18-10-2005 19:11:49
Fechas en SQL silviodp Conexión con bases de datos 2 26-09-2005 16:23:51


La franja horaria es GMT +2. Ahora son las 20:29:15.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi