JD333:
dado un tiempo a los usuarios, que estoy tratando de averiguar si una tienda está abierta o cerrada.
Mi HoursOfOperation DB es el siguiente:
dayid | openTime | closeTime
3 1500 2400
4 1500 2400
5 1500 100
6 1500 200
dayid es Domingo - Sábado: 0-6, respectivamente.
OpenTime y CloseTime oscilan entre 0 a 2.400.
Si el tiempo de usuario es decir 1800 en un miércoles, eso es fácil. El lugar está abierto. Pero lo que si se trata de 01 a.m. en un sábado? El mayor que OpenTime devuelve falso, y la comprobación de menos de CloseTime es cierto. && falsa iguales verdaderos falsa.
He probado varios tipos de datos y la lógica de negocio. Pero estoy luchando para envolver mi cabeza alrededor de esto. ¿Qué me estoy perdiendo?
Gordon Linoff:
Puede usar la lógica de esta manera:
where dayid = @dayid and
( (openTime < closeTime and @timetocheck between openTime and closeTime) or
(openTime > closeTime and @timetocheck not between closeTime and openTime)
)
La lógica dice así:
- Si
openTime
es menoscloseTime
, a continuación, la tienda está abierta cuando el tiempo solicitado está entre ellos. - Si
openTime
es mayor quecloseTime
, a continuación, normalmentecloseTime
estaría en las primeras horas de la mañana. La tienda está cerrada entre lacloseTime
yopenTime
. Por lo tanto, la tienda está abierta en otras ocasiones.