Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Lidando com os tempos e depois da meia-noite


Armazenar minuto (int(4) unsigned) é o caminho a seguir.
No entanto, em vez de armazenar dia da semana + hora_abertura, hora de fechamento (com deslocamento),
você deve armazenar o minuto desde segunda-feira às 12h :-
 Monday  18:00 = (1 - 1)*60 * 18 = 1080
 Tuesday 02:00 = (2 - 1)*60 * 24 + (2 * 60) = 1560
 ...
 // please take note shop could have different operating hour for each day

Então, o horário atual é terça-feira 1h30, que é:-
 // mysql expression
 $expr = (weekday(current_timestamp)+1) * 1440 + (hour(current_timestamp)*60) + minute(current_timestamp)

O SQL:-
 select ... 
 from opening_hours
 where
 open_time  >= $expr and
 close_time <= $expr;