Hallo,
Muss eine Datenbankabfrage jeden Tag machen die zwischen Uhrzeit 22 Uhr bis 6Uhr des nächsten Tages liegt
Wenn ich jetzt den 3 Tag im Monat abfrage so habe ich alle zwischen 22 und 0Uhr am 3.
und alles zwischen 0-6Uhr am 4. Tag geschrieben
der Jetzige SQL Code sieht so aus
[codebox=postgresql file=Unbenannt.sql]
SELECT
COUNT(arbeitsauftrag_id) AS Stk,
SUM(fertiggewicht) AS Gewicht,
SUM(zeit) AS Zeit,
EXTRACT(day FROM datum) AS Day
FROM arbeitsauftrag
WHERE
date_part('year',datum)='2016' AND date_part('month',datum)='11' AND
NOT (EXTRACT(Hour FROM datum)<22 AND EXTRACT(HOUR FROM datum)>=6)
AND abteilung='1'
GROUP BY Day
ORDER BY Day
[/code]
Im Moment stehe ich an wie die Abfrage umgeändert werden muss.
mfg Peter
Daten zwischen zwei Tagen filtern
@Peter1977: Musst Du die Abfrage jeden Tag für den Folgetag machen, oder eine Abfrage die das Ergebnis für alle Tage liefert? Im Text sprichst Du vom 3. und 4. im Monat, in der SQL-Abfrage kommt der Tag dann aber gar nicht vor‽
Für einen Tag würde ich die Abfrage so schreiben:
Und Start und Ende für die Platzhalter in Python berechnen.
Für einen Tag würde ich die Abfrage so schreiben:
Code: Alles auswählen
SELECT count(arbeitsauftrag.id) AS stk,
sum(arbeitsauftrag.fertiggewicht) AS gewicht,
sum(arbeitsauftrag.zeit) AS zeit
FROM arbeitsauftrag
WHERE arbeitsauftrag.abteilung = '1' AND arbeitsauftrag.datum BETWEEN ? AND ?
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Alternativ kann man natürlich das zweite Datum aus dem ersten + einen Offset von 8 Stunden berechnen. Je nach SQL-Server kann dies unterschiedlich praktikabel sein. Somit bräuchte man nun noch einen Parameter übergeben.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
@Hyperion: Wobei man da dann darauf achten sollte das zweimal im Jahr die Zeitspanne zwischen 22 und 6 Uhr nicht 8 Stunden beträgt. Also in beiden Fällen muss man darauf achten, sowohl bei der Datenbank als auch wenn man die Grenzen in Python berechnet.
Hallo,
vom 1 bis 28-31 je nach monat
ergebnis sieht dan so au
Tag Stk Gewicht
1 1 543
2 3 120
3 2 500
4 1 125
5
6 3 200
Tag 3 läuft bei der oberen Abfrage von 22-6
Tag 4 ist ein Samstag
Tag 5 ein Sonntag
6 wieder ein Montag
alles nur zum Beispiel
das läuft in der Obigen Abfrage ja so das es am Tag 3 zuerst 0-6Uhr und dann 22-0Uhr genommen wird
Richtig wäre Tag 3 von 22-0Uhr und dann vom Folgetag vom 4. von 0-6Uhr dazugenommen wird.
mfg Peter
Ne das läuft dann über das ganze Monat@Peter1977: Musst Du die Abfrage jeden Tag für den Folgetag machen, oder eine Abfrage die das Ergebnis für alle Tage liefert? Im Text sprichst Du vom 3. und 4. im Monat, in der SQL-Abfrage kommt der Tag dann aber gar nicht vor‽
vom 1 bis 28-31 je nach monat
ergebnis sieht dan so au
Tag Stk Gewicht
1 1 543
2 3 120
3 2 500
4 1 125
5
6 3 200
Tag 3 läuft bei der oberen Abfrage von 22-6
Tag 4 ist ein Samstag
Tag 5 ein Sonntag
6 wieder ein Montag
alles nur zum Beispiel
das läuft in der Obigen Abfrage ja so das es am Tag 3 zuerst 0-6Uhr und dann 22-0Uhr genommen wird
Richtig wäre Tag 3 von 22-0Uhr und dann vom Folgetag vom 4. von 0-6Uhr dazugenommen wird.
mfg Peter
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
@BlackJack: Stimmt. (Doofe Zeitumstellung )
Dann ist es vermutlich besser, das Datum des nächsten Tages aus dem ersten zu berechnen und dort 6:00 Uhr fix zu setzen.
Dann ist es vermutlich besser, das Datum des nächsten Tages aus dem ersten zu berechnen und dort 6:00 Uhr fix zu setzen.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
@Peter1977: Ich würde wahrscheinlich einfach zwei Abfragen absetzen und die dann auf Clientseite zusammenrechnen.