Verbleibende Zeit zwischen 2 Spalten ermitteln(Datum)

SelectClue

Neuer Benutzer
Beiträge
1
Hallo liebe Leute,

bin hier seit heute in diesem Forum, da ich Hilfe benötige und einfach nicht draufkomme, obwohl es sicherlich sehr leicht ist :)

Ich habe zwei Spalten "Arbeitszeit von(YYYY-MM-TT)" und "Arbeitszeit bis(YYYY-MM-TT)" nun die Frage:
Wie Frage ich die verbleibende Zeit ab also in Tagen?

Danke im Voraus :)
 
Werbung:
Hallo liebe Leute,

bin hier seit heute in diesem Forum, da ich Hilfe benötige und einfach nicht draufkomme, obwohl es sicherlich sehr leicht ist :)

Ich habe zwei Spalten "Arbeitszeit von(YYYY-MM-TT)" und "Arbeitszeit bis(YYYY-MM-TT)" nun die Frage:
Wie Frage ich die verbleibende Zeit ab also in Tagen?

Danke im Voraus :)

Du hast also z.B. so etwas:

Code:
test=*# select * from selectclue ;
 name  |  von  |  bis
-------+------------+------------
 hans  | 2015-03-01 | 2015-03-25
 peter | 2015-03-10 | 2015-03-30
(2 rows)

Das kann man nun z.B. auf die einzelnen Tage aufdöseln:

Code:
test=*# select *, datum from selectclue sv, lateral (select * from generate_series(sv.von, sv.bis, '1day') datum) foo;
 name  |  von  |  bis  |  datum  |  datum   
-------+------------+------------+------------------------+------------------------
 hans  | 2015-03-01 | 2015-03-25 | 2015-03-01 00:00:00+01 | 2015-03-01 00:00:00+01
 hans  | 2015-03-01 | 2015-03-25 | 2015-03-02 00:00:00+01 | 2015-03-02 00:00:00+01
 hans  | 2015-03-01 | 2015-03-25 | 2015-03-03 00:00:00+01 | 2015-03-03 00:00:00+01
 hans  | 2015-03-01 | 2015-03-25 | 2015-03-04 00:00:00+01 | 2015-03-04 00:00:00+01
 hans  | 2015-03-01 | 2015-03-25 | 2015-03-05 00:00:00+01 | 2015-03-05 00:00:00+01
 hans  | 2015-03-01 | 2015-03-25 | 2015-03-06 00:00:00+01 | 2015-03-06 00:00:00+01
 hans  | 2015-03-01 | 2015-03-25 | 2015-03-07 00:00:00+01 | 2015-03-07 00:00:00+01
 hans  | 2015-03-01 | 2015-03-25 | 2015-03-08 00:00:00+01 | 2015-03-08 00:00:00+01
 hans  | 2015-03-01 | 2015-03-25 | 2015-03-09 00:00:00+01 | 2015-03-09 00:00:00+01
 hans  | 2015-03-01 | 2015-03-25 | 2015-03-10 00:00:00+01 | 2015-03-10 00:00:00+01
 hans  | 2015-03-01 | 2015-03-25 | 2015-03-11 00:00:00+01 | 2015-03-11 00:00:00+01
 hans  | 2015-03-01 | 2015-03-25 | 2015-03-12 00:00:00+01 | 2015-03-12 00:00:00+01
 hans  | 2015-03-01 | 2015-03-25 | 2015-03-13 00:00:00+01 | 2015-03-13 00:00:00+01
 hans  | 2015-03-01 | 2015-03-25 | 2015-03-14 00:00:00+01 | 2015-03-14 00:00:00+01
 hans  | 2015-03-01 | 2015-03-25 | 2015-03-15 00:00:00+01 | 2015-03-15 00:00:00+01
 hans  | 2015-03-01 | 2015-03-25 | 2015-03-16 00:00:00+01 | 2015-03-16 00:00:00+01
 hans  | 2015-03-01 | 2015-03-25 | 2015-03-17 00:00:00+01 | 2015-03-17 00:00:00+01
 hans  | 2015-03-01 | 2015-03-25 | 2015-03-18 00:00:00+01 | 2015-03-18 00:00:00+01
 hans  | 2015-03-01 | 2015-03-25 | 2015-03-19 00:00:00+01 | 2015-03-19 00:00:00+01
 hans  | 2015-03-01 | 2015-03-25 | 2015-03-20 00:00:00+01 | 2015-03-20 00:00:00+01
 hans  | 2015-03-01 | 2015-03-25 | 2015-03-21 00:00:00+01 | 2015-03-21 00:00:00+01
 hans  | 2015-03-01 | 2015-03-25 | 2015-03-22 00:00:00+01 | 2015-03-22 00:00:00+01
 hans  | 2015-03-01 | 2015-03-25 | 2015-03-23 00:00:00+01 | 2015-03-23 00:00:00+01
 hans  | 2015-03-01 | 2015-03-25 | 2015-03-24 00:00:00+01 | 2015-03-24 00:00:00+01
 hans  | 2015-03-01 | 2015-03-25 | 2015-03-25 00:00:00+01 | 2015-03-25 00:00:00+01
 peter | 2015-03-10 | 2015-03-30 | 2015-03-10 00:00:00+01 | 2015-03-10 00:00:00+01
 peter | 2015-03-10 | 2015-03-30 | 2015-03-11 00:00:00+01 | 2015-03-11 00:00:00+01
 peter | 2015-03-10 | 2015-03-30 | 2015-03-12 00:00:00+01 | 2015-03-12 00:00:00+01
 peter | 2015-03-10 | 2015-03-30 | 2015-03-13 00:00:00+01 | 2015-03-13 00:00:00+01
 peter | 2015-03-10 | 2015-03-30 | 2015-03-14 00:00:00+01 | 2015-03-14 00:00:00+01
 peter | 2015-03-10 | 2015-03-30 | 2015-03-15 00:00:00+01 | 2015-03-15 00:00:00+01
 peter | 2015-03-10 | 2015-03-30 | 2015-03-16 00:00:00+01 | 2015-03-16 00:00:00+01
 peter | 2015-03-10 | 2015-03-30 | 2015-03-17 00:00:00+01 | 2015-03-17 00:00:00+01
 peter | 2015-03-10 | 2015-03-30 | 2015-03-18 00:00:00+01 | 2015-03-18 00:00:00+01
 peter | 2015-03-10 | 2015-03-30 | 2015-03-19 00:00:00+01 | 2015-03-19 00:00:00+01
 peter | 2015-03-10 | 2015-03-30 | 2015-03-20 00:00:00+01 | 2015-03-20 00:00:00+01
 peter | 2015-03-10 | 2015-03-30 | 2015-03-21 00:00:00+01 | 2015-03-21 00:00:00+01
 peter | 2015-03-10 | 2015-03-30 | 2015-03-22 00:00:00+01 | 2015-03-22 00:00:00+01
 peter | 2015-03-10 | 2015-03-30 | 2015-03-23 00:00:00+01 | 2015-03-23 00:00:00+01
 peter | 2015-03-10 | 2015-03-30 | 2015-03-24 00:00:00+01 | 2015-03-24 00:00:00+01
 peter | 2015-03-10 | 2015-03-30 | 2015-03-25 00:00:00+01 | 2015-03-25 00:00:00+01
 peter | 2015-03-10 | 2015-03-30 | 2015-03-26 00:00:00+01 | 2015-03-26 00:00:00+01
 peter | 2015-03-10 | 2015-03-30 | 2015-03-27 00:00:00+01 | 2015-03-27 00:00:00+01
 peter | 2015-03-10 | 2015-03-30 | 2015-03-28 00:00:00+01 | 2015-03-28 00:00:00+01
 peter | 2015-03-10 | 2015-03-30 | 2015-03-29 00:00:00+01 | 2015-03-29 00:00:00+01
 peter | 2015-03-10 | 2015-03-30 | 2015-03-30 00:00:00+02 | 2015-03-30 00:00:00+02
(46 rows)

Nun wollen wir aber nur noch die Tage ab heute:

Code:
test=*# select *, datum from selectclue sv, lateral (select * from generate_series(sv.von, sv.bis, '1day') datum) foo where datum > current_date;
 name  |  von  |  bis  |  datum  |  datum
-------+------------+------------+------------------------+------------------------
 hans  | 2015-03-01 | 2015-03-25 | 2015-03-22 00:00:00+01 | 2015-03-22 00:00:00+01
 hans  | 2015-03-01 | 2015-03-25 | 2015-03-23 00:00:00+01 | 2015-03-23 00:00:00+01
 hans  | 2015-03-01 | 2015-03-25 | 2015-03-24 00:00:00+01 | 2015-03-24 00:00:00+01
 hans  | 2015-03-01 | 2015-03-25 | 2015-03-25 00:00:00+01 | 2015-03-25 00:00:00+01
 peter | 2015-03-10 | 2015-03-30 | 2015-03-22 00:00:00+01 | 2015-03-22 00:00:00+01
 peter | 2015-03-10 | 2015-03-30 | 2015-03-23 00:00:00+01 | 2015-03-23 00:00:00+01
 peter | 2015-03-10 | 2015-03-30 | 2015-03-24 00:00:00+01 | 2015-03-24 00:00:00+01
 peter | 2015-03-10 | 2015-03-30 | 2015-03-25 00:00:00+01 | 2015-03-25 00:00:00+01
 peter | 2015-03-10 | 2015-03-30 | 2015-03-26 00:00:00+01 | 2015-03-26 00:00:00+01
 peter | 2015-03-10 | 2015-03-30 | 2015-03-27 00:00:00+01 | 2015-03-27 00:00:00+01
 peter | 2015-03-10 | 2015-03-30 | 2015-03-28 00:00:00+01 | 2015-03-28 00:00:00+01
 peter | 2015-03-10 | 2015-03-30 | 2015-03-29 00:00:00+01 | 2015-03-29 00:00:00+01
 peter | 2015-03-10 | 2015-03-30 | 2015-03-30 00:00:00+02 | 2015-03-30 00:00:00+02
(13 rows)

Aber eigentlich wollen wir nur die Anzahl wissen, oder?

Code:
test=*# select name, count(*) from selectclue sv, lateral (select * from generate_series(sv.von, sv.bis, '1day') datum) foo where datum > current_date group by name;
 name  | count
-------+-------
 peter |  9
 hans  |  4
(2 rows)
 
Werbung:
Zurück
Oben