artus-excalibur
Goto Top

Tage errechnen

Hiho zusammen

folgender Fall, ich hab in einer Tabelle 2 Spalten: Eingangsdatum 01.01.2009 (dd.mm.yyyy) und Ausgangsdatum 03.01.2009 (dd.mm.yyyy)

nun möchte ich errechnen wieviel Tage sind zwischen Eingangsdatum und Ausgangsdatum vergangen. Gibts da eine möglichkeit mit SQL?
Kommentar vom Moderator Biber am Aug 07, 2009 um 19:09:05 Uhr
Kein Feedback seitens des Beitragserstellers.
-> Fürs Forum wertlos. Verschoben in den Papierkorb.
[Edit 10.8.2009] Nach Feedback des Beitragserstellers zurückverschoben in den Bereich "Datenbanken".
[/Edit]

Content-Key: 120642

Url: https://administrator.de/contentid/120642

Printed on: April 19, 2024 at 14:04 o'clock

Member: maretz
maretz Jul 16, 2009 at 13:13:51 (UTC)
Goto Top
mit sql glaub ich eher weniger -> aber mit jeder anderen programmiersprache sollte es gehen... Zuerst bildest du aus beiden Datumswerten einen Timestamp - und dann einfach
$diff = $timestampAusgang -$timestampEingang;

Dann noch $diff/86400 teilen - und du hast die Anzahl der Tage zwischen beiden Werten...

Gruß

Mike
Member: Biber
Biber Jul 16, 2009 at 13:34:29 (UTC)
Goto Top
Moin artus_Excalibur,

klar kann das SQL.
In welcher Form hängt von dem konkreten Datenbank-Blech ab, das bei Dir vorliegt.

Muttu mal mit rüberkommen, ob Du gerade Oracle oder Teradata oder mySQL verwendest.

Grüße
Biber
Member: Netzheimer
Netzheimer Jul 16, 2009 at 14:00:30 (UTC)
Goto Top
Hallo.

Ich gehe mal von MSSQL aus. Es gibt die Funktion Select DATEDIFF(dd, start, ende).

Der Parameter dd bezieht sich auf Tage
start ist das Anfangsdatum
ende das Enddatum

Gruß
Netzheimer
Member: artus-Excalibur
artus-Excalibur Jul 16, 2009 at 14:03:49 (UTC)
Goto Top
@Biber Oracle Datenbank

@ Netzheimer, hättest du ein Beispiel dazu?
Mitglied: 27234
27234 Jul 16, 2009 at 14:11:54 (UTC)
Goto Top
Hallo,

in Oracle:
select TO_DATE('03/01/2009','DD/MM/YYYY') - TO_DATE('01/01/2009','DD/MM/YYYY') from dual;  

Gruß René
Member: Biber
Biber Jul 16, 2009 at 14:16:01 (UTC)
Goto Top
SELECT	AprilApril, HelauHelau 
    ,    ROUND(HelauHelau-AprilApril)                 "Tage"  
    ,   ROUND((HelauHelau-AprilApril)*24)            "Stunden"  
    ,   ROUND((HelauHelau-AprilApril)*24*60)         "Minuten"  
    ,   ROUND((HelauHelau-AprilApril)*24*60*60)      "Sekunden"  
    ,   ROUND(MONTHS_BETWEEN(HelauHelau,AprilApril)) "Monate"  
    ,   'RTFM! Mfg Biber'                           "etc. pp"  

FROM(
	SELECT TO_DATE('01.04.2009 00:00:00','DD.MM.YYYY HH24:MI:SS') AprilApril  
    	    ,  TO_DATE('11.11.2009 11:11:11','DD.MM.YYYY HH24:MI:SS') HelauHelau  
	FROM DUAL
)
Output.
APRILAPRIL	HELAUHELAU	Tage	Stunden	Minuten	Sekunden	Monate	etc. pp

01.04.09	         11.11.09 11:11:11	224	5387	323231	19393871	7	RTFM!. Mfg Biber
Member: Netzheimer
Netzheimer Jul 17, 2009 at 09:53:50 (UTC)
Goto Top
Hier ein Beispiel:

SELECT DATEDIFF(dd, getdate(), '25.07.2009')

Ergebnis:
8
Member: Biber
Biber Aug 07, 2009 at 19:17:06 (UTC)
Goto Top
Tja, artus_Excalibur,

wie auch immer Du die vergangenen Tage errechnet hast - inzwischen musst Du wohl noch eine Pseudokonstante "DaysSinceLastFeedback" in der Größenordnung 20 draufschlagen.

Wenn Du mal posten könntest, welcher Algorithmus nun zum Ziel geführt hat, dann könnten wir es auch exakt berechnen (Tage von 17.7.2009 bis 7.8.2009.)

Wenn der Beitrag allerdings länger auf diesem "Nicht erledigt und keine Bewegung"-Status verbleibt, wird er nach ein paar (zu errechnenden) Tagen aus dem Papierkorb gelöscht.

Grüße
Biber
Member: artus-Excalibur
artus-Excalibur Aug 10, 2009 at 09:33:08 (UTC)
Goto Top
also keine der genannten lösungen hat zu dem von mir erhofftem ergebnis geführt. Da ich im moment andere prioritäten habe, is der fall immernoch offen