Reputation: 3146
I have a MySQL table that has two fields start_interval
and end_interval
both storing int
values that represent hours. I'm using this query to select records from that table:
SELECT *
FROM messages
WHERE 23 BETWEEN start_interval AND end_interval;
How can I get values when the start_interval
is greater than end_interval
? For exemple if start_interval = 22
and end_interval = 5
?
Upvotes: 0
Views: 715
Reputation: 6801
How about:
where 23 between start_interval and if(start_interval>=end_interval,end_interval+24,end_interval)?
Upvotes: 0
Reputation: 77657
…
WHERE 23 BETWEEN start_interval AND end_interval
OR start_interval > end_interval AND
23 NOT BETWEEN end_interval + 1 AND start_interval - 1
Upvotes: 0
Reputation: 500227
How about:
SELECT * FROM messages
WHERE 23 BETWEEN LEAST(start_interval, end_interval) AND
GREATEST(start_interval, end_interval);
Upvotes: 7
Reputation: 29739
Maybe you check for both directions:
SELECT * FROM messages
WHERE
(23 BETWEEN start_interval AND end_interval) OR
(23 BETWEEN end_interval AND start_interval);
Upvotes: 2