Select Times of Day in 5 Minutes Interval

Kampfgummibaerlie

Datenbank-Guru
Beiträge
734
Mein anliegen wäre jetzt, wo ich nach einer gewissen Zeit Unterbrechung aus gesundheitlichen und emotionalen Gründen, bin ich einmal wieder zurück.

Kann man bei PGSQL (kann man sicher) alle Uhrzeiten (eben im 5 Minuten Takt) selecten?

Bin zurzeit bei PHP, hätte nur gerne eine Abfrage, die alle Uhrzeiten selected, und dann mittels einer where-klausel eingeschränkt wird, damit ich alle möglichen Uhrzeiten in der Öffnungszeit in einer Dropdownliste anzeigen könnte.

Für die SQL-Leute hier übersetzt :D :
Ich hätte gerne eine Abfrage, die mir alle möglichen Uhrzeiten (von 00:00 bis 23:55) selected, und dann am Ende mittels einem Where eben die Uhrzeiten auf die während der Öffnungszeiten einschränkt.

Danke ;)

PS: Werde wohl niewieder vom Programmieren wegkommen :D (hoffe ich ^^)

EDIT: Wäre gerne nochmals über Loops genauer unterrichtet, am besten mit ein wenig Praxis-Übungen ^^
 
Werbung:
Ja, sowas in die Richtung, habe ich glaube ich gestern schonmal ähnlich im Internet gefunden, aber ich habe das Problem, dass er die Spalte nicht erkennt, obwohl ich sie genauso benenne, und damit nicht in der Where Klausel einsetzen kann.

Beispiel:
Code:
select time '00:00' + i * interval '5' minute as time
from generate_series(0, (24 * 60) - 5) i, öffnungszeiten where time >= '08:00'::time

Error:
column "time" does not exist
 
Du kannst einen Spaltenalias nicht auf der gleichen Ebene im WHERE verwenden.

Du musst das in eine sog. derived table verpacken:

Code:
select *
from (
  select time '00:00' + i * interval '1' minute as time
  from generate_series(0, (24 * 60) - 5, 5) i
) t
where time >= '08:00'::time;
 
Danke, funktioniert jetzt einwandfrei ;)

nachdem es mich interessiert, und womöglich auch andere:
Kannst du eine Erklärung zu den einzelnen Schritten deiner Querry geben?
 
Werbung:
generate_series(0, (24 * 60) - 5, 5) generiert Zahlen in fünfer Schritten zwischen 0 und (24 * 60). 24 * 60 ist die Anzahl der Minuten in einem Tag. Nachdem der letzte Wert 23:55 sein soll, werden davon noch fünf Minuten abgezogen.

Das Resultat davon ist also sowas in der Art:
Code:
i   
----
   0
   5
  10
....
1435

Das sind sozusagen die Minuten nach Mitternacht die für jede Uhrzeit relevant sind. Der Zahlenwert i wird durch das Multiplizieren mit einem Intervall der Länge "1 Minute" zu einem Intervall der Länge "i Minuten" und dieses Intervall wird dann auf den festen Startwert "Mitternacht" (time '00:00') addiert.



 
Zurück
Oben