select

20/10/2005 - 17:36 por Enrique Rodríguez | Informe spam
Hola foro.

Es posible hacer un select para traer todos los registros que correspondan a
una semana partiendo de una fecha, es decir hacer una comparacion (textbox
vs campo) solo que ambos son fechas y lo que quiero es que por decir si
pongo en mi textbox 01/08/2005 que me busque todos los registros de esa
semana, se como sacar que semana del año corresponde a la fecha del textbox,
pero no se como compararla contra el dato del campo.

Esto es lo que llevo.
Dim SelectCommand As String = "Select * from CGstat where Fecha =
@Parametro1"


Dim oDs As New DataSet

Dim oDa As New SqlDataAdapter(SelectCommand, oConnSql)

oDa.SelectCommand.Parameters.Add(New SqlParameter("@Parametro1",
SqlDbType.VarChar))

oDa.SelectCommand.Parameters("@Parametro1").Value =
DatePart(DateInterval.WeekOfYear, CDate(txtFecha.Text))


O de ser posible que me dieran alguna pista de como hacer lo que necesito.

Gracias.

Enrique Rodríguez

Preguntas similare

Leer las respuestas

#1 A.Poblacion
20/10/2005 - 17:09 | Informe spam
"Enrique Rodríguez" wrote in message
news:
Es posible hacer un select para traer todos los registros que correspondan


a
una semana partiendo de una fecha, es decir hacer una comparacion (textbox
vs campo) solo que ambos son fechas y lo que quiero es que por decir si
pongo en mi textbox 01/08/2005 que me busque todos los registros de esa
semana, se como sacar que semana del año corresponde a la fecha del


textbox,
pero no se como compararla contra el dato del campo.



"Select * from CGstat where Datepart(wk, Fecha) = Datepart(wk,
@Parametro1)"

En @Parametro1 le pasas directamente la fecha completa cuya semana quieres
comparar.

Ten presente que la función Datepart de Sql Server es sensible al valor que
hayas puesto en el SET DATEFIRST del servidor (determina si se considera que
la semana empieza en lunes o en domingo).
Respuesta Responder a este mensaje
#2 Jesús López
20/10/2005 - 22:21 | Informe spam
Eso funcionaría si sólo hubiera un año en la base de datos. Además una
instrucción como esa provocará un plan de ejecución muy poco eficiente ya
que necesariamente SQL Server tendrá que hacer un recorrido completo de la
tabla.

Si existe un índice sobre el campo fecha en la tabla CGstat será mucho más
eficiente hacer una consulta como:

select * from CGstat where Fecha between @FechaInicial and @FechaFinal

Donde @FechaInicial y @FechaFinal podrían ser el primero y el último día de
la semana respectivamente. Calcular el primero y el último día de la semana
desde VB.NET o C# a partir de un día en concreto no resulta muy complicado y
merece la pena por el aumento considerable del rendimiento sobre todo si la
tabla tiene muchas filas.

"A.Poblacion" escribió en
el mensaje news:eV%
"Enrique Rodríguez" wrote in message
news:
Es posible hacer un select para traer todos los registros que
correspondan


a
una semana partiendo de una fecha, es decir hacer una comparacion
(textbox
vs campo) solo que ambos son fechas y lo que quiero es que por decir si
pongo en mi textbox 01/08/2005 que me busque todos los registros de esa
semana, se como sacar que semana del año corresponde a la fecha del


textbox,
pero no se como compararla contra el dato del campo.



"Select * from CGstat where Datepart(wk, Fecha) = Datepart(wk,
@Parametro1)"

En @Parametro1 le pasas directamente la fecha completa cuya semana quieres
comparar.

Ten presente que la función Datepart de Sql Server es sensible al valor
que
hayas puesto en el SET DATEFIRST del servidor (determina si se considera
que
la semana empieza en lunes o en domingo).


Respuesta Responder a este mensaje
#3 Enrique Rodríguez
21/10/2005 - 00:38 | Informe spam
Ok jesus lo que pasa es que no queria complicar mucho al usuario, pero
tienes razon me va a surgir otro problema cuando tenga dos años en la tabla.

La logica de mi proyecto es la siguiente:

El usuario entra a una pagina donde carga unos archivos de excel para que
sean insertados en la BD SQL, cada archivo contiene datos de una semana
(lunes a viernes).
Despues en otra pagina prentendo hacer las consultas (comparaciones) entre
los datos de dos semanas, necesito hacer la comparacion de una semana con la
siguiente los datos que necesito comparar son unos aforos vehiculares y las
almaceno asi en la tabla.
CT Zona Fecha Hora Aforo
CT1 Z:1 01/08/2005 1:00:00 256
CT1 Z:1 01/08/2005 2:00:00 300
... ... . ...
CT1 Z:1 05/08/2005 24:00:00 150

Es decir hay un dato por cada hora y para cada dia de la semana

Ahora bien, lo pretendo comparar contra los datos obtenidos de la siguiente
semana y sacar el porcentaje de variacion
CT Zona Fecha Hora Aforo
CT1 Z:1 08/08/2005 1:00:00 200
CT1 Z:1 08/08/2005 2:00:00 320
... ... . ...
CT1 Z:1 12/08/2005 24:00:00 100

Alguna idea de como hacerlo?

"Jesús López" escribió en el mensaje
news:%238Mc%
Eso funcionaría si sólo hubiera un año en la base de datos. Además una
instrucción como esa provocará un plan de ejecución muy poco eficiente ya
que necesariamente SQL Server tendrá que hacer un recorrido completo de la
tabla.

Si existe un índice sobre el campo fecha en la tabla CGstat será mucho más
eficiente hacer una consulta como:

select * from CGstat where Fecha between @FechaInicial and @FechaFinal

Donde @FechaInicial y @FechaFinal podrían ser el primero y el último día
de la semana respectivamente. Calcular el primero y el último día de la
semana desde VB.NET o C# a partir de un día en concreto no resulta muy
complicado y merece la pena por el aumento considerable del rendimiento
sobre todo si la tabla tiene muchas filas.

"A.Poblacion" escribió en
el mensaje news:eV%
"Enrique Rodríguez" wrote in message
news:
Es posible hacer un select para traer todos los registros que
correspondan


a
una semana partiendo de una fecha, es decir hacer una comparacion
(textbox
vs campo) solo que ambos son fechas y lo que quiero es que por decir si
pongo en mi textbox 01/08/2005 que me busque todos los registros de esa
semana, se como sacar que semana del año corresponde a la fecha del


textbox,
pero no se como compararla contra el dato del campo.



"Select * from CGstat where Datepart(wk, Fecha) = Datepart(wk,
@Parametro1)"

En @Parametro1 le pasas directamente la fecha completa cuya semana
quieres
comparar.

Ten presente que la función Datepart de Sql Server es sensible al valor
que
hayas puesto en el SET DATEFIRST del servidor (determina si se considera
que
la semana empieza en lunes o en domingo).






email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida