2012-04-01 6 views
0

Ich habe eine MySQL-Datenbank mit einer Tabellenstruktur wie unten:Wie kann man die Zeit mit der aktuellen Zeit vergleichen und Ergebnisse anzeigen, die auf MySQL basieren?

Table Name : shop_mst 
Fields : 
shop_name  varchar(100) 
start_time time 
close_time time 

Zeit in 24Hour Format gespeichert wird. Jetzt möchte ich eine SQL-Abfrage erstellen, um alle Datensätze anzuzeigen, aber Shop-Status als Open/Closed basierend auf der aktuellen Zeit anzuzeigen. Wenn also die aktuelle Zeit zwischen start_time & close_time liegt, sollte "Open" mit dem Shop-Namen angezeigt werden. Und wenn nicht, sollte "Closed" mit dem Shop-Namen angezeigt werden. Wie kann ich das machen? Ich möchte auch Tag mit einem Feld in einer anderen Tabelle vergleichen, aber diesen Teil werde ich selbst tun :)

Vielen Dank im Voraus.

+0

Sie können MySQL und jede andere Sprache, die Sie tun, lernen. Wenn Sie jedoch hilfreicher sein möchten, verwenden Sie einfach einen CASE oder verarbeiten Sie ihn vorzugsweise in der Sprache, in der Sie SQL verwenden, nicht jedoch in SQL. – Corbin

Antwort

1

Versuchen Sie unter:

select shop_name,if(left(curtime(),5) between start_time and close_time ,'Open','Closed') as status 
from tablename 

Sie star_time und close_time in 18 Unter der Annahme, Lagerung: 30,16: 15 ... Format.

+0

Ich speichere es als 11:00:00 – aslamdoctor

+0

Aber es hat funktioniert :), danke – aslamdoctor

+0

Sie können nur curtime() anstelle von links (curtime(), 5) dann verwenden –

Verwandte Themen