Comparación Fecha y hora...

31/05/2006 - 17:36 por Mauro Pasetti [Adv] | Informe spam
Hola gente.. de antemano, muchas gracias por la respuesta.
Tengo 2 campos datetime: FechahoraInicio y Fechahorafin que pertenece a un
usuario del sistema que indicando su vigencia.
Si quiero verificar si en la fecha y hora actual, dicho usuario tiene
permisos para operar dentro del sistema, me encuentro con un problema...
porque la comparación que hago es la siguiente:
Yo pregunta si GetDate está entre FechahoraInicio y FechahoraFin. Sin
embargo en esta comprobación no se verifica que se cumpla el rango horario
para cada día en particular... (es decir, necesito comparar que esté entre
el rango de fecha y el rango horario. Actualmente me toma el tiempo de
origen a fin todo continuado y yo necesito verificar también en horario como
un fragmento que se tiene que verificar caa día).
No se si es muy complicado pero espero que se entienda lo que dije... vi la
funcion datepart pero me parece que significa escribir mucho... espero que
haya otra función más simple.
Saludos, Mauro.

Preguntas similare

Leer las respuestas

#1 Maxi
31/05/2006 - 17:54 | Informe spam
Mauro no te comprendi bien, si tienes algun ejemplo seria de mucha utilidad.
El campo datetime almacena tanto la fecha como la hora con lo cual podes
hacer esa comparacion que estas mencionando. Si me pasas la estructura de la
tabla y algunos ejemplos de registros y como lo queres podre darme mas
cuenta de que estas necesitando.

Gracias!


Salu2
Maxi [MVP SQL SERVER]
www.sqlgurus.org


"Mauro Pasetti [Adv]" escribió en el mensaje
news:e4S1$
Hola gente.. de antemano, muchas gracias por la respuesta.
Tengo 2 campos datetime: FechahoraInicio y Fechahorafin que pertenece a un
usuario del sistema que indicando su vigencia.
Si quiero verificar si en la fecha y hora actual, dicho usuario tiene
permisos para operar dentro del sistema, me encuentro con un problema...
porque la comparación que hago es la siguiente:
Yo pregunta si GetDate está entre FechahoraInicio y FechahoraFin. Sin
embargo en esta comprobación no se verifica que se cumpla el rango horario
para cada día en particular... (es decir, necesito comparar que esté entre
el rango de fecha y el rango horario. Actualmente me toma el tiempo de
origen a fin todo continuado y yo necesito verificar también en horario
como un fragmento que se tiene que verificar caa día).
No se si es muy complicado pero espero que se entienda lo que dije... vi
la funcion datepart pero me parece que significa escribir mucho... espero
que haya otra función más simple.
Saludos, Mauro.


Respuesta Responder a este mensaje
#2 Isaias
31/05/2006 - 20:49 | Informe spam
Mauro

Maxi tiene razon, esta muy confusa tu explicacion, espero haber entendido el
objetivo, prueba asi:

WHERE FechaHoraInicio >= GETDATE() AND FechaHoraFinal <= GETDATE()
Saludos
IIslas


"Mauro Pasetti [Adv]" escribió:

Hola gente.. de antemano, muchas gracias por la respuesta.
Tengo 2 campos datetime: FechahoraInicio y Fechahorafin que pertenece a un
usuario del sistema que indicando su vigencia.
Si quiero verificar si en la fecha y hora actual, dicho usuario tiene
permisos para operar dentro del sistema, me encuentro con un problema...
porque la comparación que hago es la siguiente:
Yo pregunta si GetDate está entre FechahoraInicio y FechahoraFin. Sin
embargo en esta comprobación no se verifica que se cumpla el rango horario
para cada día en particular... (es decir, necesito comparar que esté entre
el rango de fecha y el rango horario. Actualmente me toma el tiempo de
origen a fin todo continuado y yo necesito verificar también en horario como
un fragmento que se tiene que verificar caa día).
No se si es muy complicado pero espero que se entienda lo que dije... vi la
funcion datepart pero me parece que significa escribir mucho... espero que
haya otra función más simple.
Saludos, Mauro.



Respuesta Responder a este mensaje
#3 Mauro Pasetti [Adv]
31/05/2006 - 21:36 | Informe spam
Ok Maxi, gracias por tu interés.
Vamos con un ejemplo.
Fulano entra a trabajar a una PC,
Trabaja con un plan de datos1 entre 01/01/2006 13:00 - al - 30/01/1006
18:00 (tiene fecha y hora de trabajo asignada)
Si entra el 10/01/2006 a las 10:00 el sistema no de lebe permitir trabajar
con el plan de datos1 porque si bien está dentro del rango de fecha, no está
dentro del rango de horas.

Si yo pongo Where Getdate() Between FechaHoraInicio and FechaHoraFin
y Getdate()/01/2006 10:00. El sistema lo acepta aunque no esté en su
rango horario (pero sí está dentro del rango fecha).
La solución consistió en utilizar el DatePart y pasar la hora,min,sec a
segundos por medio de una función. Luego de verificar que GetDate() esté en
el rango de fecha, verifico que Fn_Sec(GetDate()) esté en el rango de
segundos para FechaHoraInicio y FechaHoraFin.

Si existe una solución más simple... sirve como aporte. Si a pesar de eso
no se entiende... podemos pensar en un sistema que marcamos tarjeta y las
tarjeta se debe verificar en un rango de fechas y un rango horario dentro de
esas fechas. Esa sería la idea.

Gracias también Isaías por tu interés



"Maxi" escribió en el mensaje
news:
Mauro no te comprendi bien, si tienes algun ejemplo seria de mucha
utilidad. El campo datetime almacena tanto la fecha como la hora con lo
cual podes hacer esa comparacion que estas mencionando. Si me pasas la
estructura de la tabla y algunos ejemplos de registros y como lo queres
podre darme mas cuenta de que estas necesitando.

Gracias!


Salu2
Maxi [MVP SQL SERVER]
www.sqlgurus.org


"Mauro Pasetti [Adv]" escribió en el mensaje
news:e4S1$
Hola gente.. de antemano, muchas gracias por la respuesta.
Tengo 2 campos datetime: FechahoraInicio y Fechahorafin que pertenece a
un usuario del sistema que indicando su vigencia.
Si quiero verificar si en la fecha y hora actual, dicho usuario tiene
permisos para operar dentro del sistema, me encuentro con un problema...
porque la comparación que hago es la siguiente:
Yo pregunta si GetDate está entre FechahoraInicio y FechahoraFin. Sin
embargo en esta comprobación no se verifica que se cumpla el rango
horario para cada día en particular... (es decir, necesito comparar que
esté entre el rango de fecha y el rango horario. Actualmente me toma el
tiempo de origen a fin todo continuado y yo necesito verificar también en
horario como un fragmento que se tiene que verificar caa día).
No se si es muy complicado pero espero que se entienda lo que dije... vi
la funcion datepart pero me parece que significa escribir mucho... espero
que haya otra función más simple.
Saludos, Mauro.






Respuesta Responder a este mensaje
#4 Alejandro Mesa
31/05/2006 - 22:29 | Informe spam
Trata:

declare @d datetime

set @d = getdate()

...
where @d between @FechaHoraInicio and @FechaHoraFin
and
(
@d between
convert(varchar(10), @d, 126) + right(convert(varchar(25), @FechaHoraInicio,
126), 13) and
convert(varchar(10), @d, 126) + right(convert(varchar(25), @FechaHoraFin,
126), 13)
)
go

Usando tu ejemplo, tendremos:

...
where cast('10/01/2006 10:00' as datetime) between
cast('01/01/2006 13:00' as datetime) and
cast('30/01/1006 18:00' as datetime)
and
(
cast('10/01/2006 10:00' as datetime) between
'10/01/2006 13:00' and '10/01/2006 18:00'
)


AMB

"Mauro Pasetti [Adv]" wrote:

Ok Maxi, gracias por tu interés.
Vamos con un ejemplo.
Fulano entra a trabajar a una PC,
Trabaja con un plan de datos1 entre 01/01/2006 13:00 - al - 30/01/1006
18:00 (tiene fecha y hora de trabajo asignada)
Si entra el 10/01/2006 a las 10:00 el sistema no de lebe permitir trabajar
con el plan de datos1 porque si bien está dentro del rango de fecha, no está
dentro del rango de horas.

Si yo pongo Where Getdate() Between FechaHoraInicio and FechaHoraFin
y Getdate()/01/2006 10:00. El sistema lo acepta aunque no esté en su
rango horario (pero sí está dentro del rango fecha).
La solución consistió en utilizar el DatePart y pasar la hora,min,sec a
segundos por medio de una función. Luego de verificar que GetDate() esté en
el rango de fecha, verifico que Fn_Sec(GetDate()) esté en el rango de
segundos para FechaHoraInicio y FechaHoraFin.

Si existe una solución más simple... sirve como aporte. Si a pesar de eso
no se entiende... podemos pensar en un sistema que marcamos tarjeta y las
tarjeta se debe verificar en un rango de fechas y un rango horario dentro de
esas fechas. Esa sería la idea.

Gracias también Isaías por tu interés



"Maxi" escribió en el mensaje
news:
> Mauro no te comprendi bien, si tienes algun ejemplo seria de mucha
> utilidad. El campo datetime almacena tanto la fecha como la hora con lo
> cual podes hacer esa comparacion que estas mencionando. Si me pasas la
> estructura de la tabla y algunos ejemplos de registros y como lo queres
> podre darme mas cuenta de que estas necesitando.
>
> Gracias!
>
>
> Salu2
> Maxi [MVP SQL SERVER]
> www.sqlgurus.org
>
>
> "Mauro Pasetti [Adv]" escribió en el mensaje
> news:e4S1$
>> Hola gente.. de antemano, muchas gracias por la respuesta.
>> Tengo 2 campos datetime: FechahoraInicio y Fechahorafin que pertenece a
>> un usuario del sistema que indicando su vigencia.
>> Si quiero verificar si en la fecha y hora actual, dicho usuario tiene
>> permisos para operar dentro del sistema, me encuentro con un problema...
>> porque la comparación que hago es la siguiente:
>> Yo pregunta si GetDate está entre FechahoraInicio y FechahoraFin. Sin
>> embargo en esta comprobación no se verifica que se cumpla el rango
>> horario para cada día en particular... (es decir, necesito comparar que
>> esté entre el rango de fecha y el rango horario. Actualmente me toma el
>> tiempo de origen a fin todo continuado y yo necesito verificar también en
>> horario como un fragmento que se tiene que verificar caa día).
>> No se si es muy complicado pero espero que se entienda lo que dije... vi
>> la funcion datepart pero me parece que significa escribir mucho... espero
>> que haya otra función más simple.
>> Saludos, Mauro.
>>
>>
>
>



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