sql >> Databasteknik >  >> RDS >> Mysql

Hanterar tider och efter midnatt

Lagring av minut (int(4) osignerad) är rätt väg att gå.
Men istället för att lagra veckodag + öppningstimme, stängningstid (med offset),
bör du lagra minuten sedan måndag 12:00 :-

 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

Så, nuvarande tid är tisdag 01:30, vilket är :-

 // mysql expression
 $expr = (weekday(current_timestamp)+1) * 1440 + (hour(current_timestamp)*60) + minute(current_timestamp)

SQL:n :-

 select ... 
 from opening_hours
 where
 open_time  >= $expr and
 close_time <= $expr;


  1. Finns det någon prestandaskillnad mellan BETWEEN och IN med MySQL eller i SQL i allmänhet?

  2. GROUP BY-beteende när inga aggregerade funktioner finns i SELECT-satsen

  3. Få tabellkolumnnamn i MySQL?

  4. hur kopierar man data från fil till PostgreSQL med JDBC?