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 07.08.2009 um 21: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-ID: 120642

Url: https://administrator.de/forum/tage-errechnen-120642.html

Ausgedruckt am: 23.12.2024 um 12:12 Uhr

maretz
maretz 16.07.2009 um 15:13:51 Uhr
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
Biber
Biber 16.07.2009 um 15:34:29 Uhr
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
Netzheimer
Netzheimer 16.07.2009 um 16:00:30 Uhr
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
artus-Excalibur
artus-Excalibur 16.07.2009 um 16:03:49 Uhr
Goto Top
@Biber Oracle Datenbank

@ Netzheimer, hättest du ein Beispiel dazu?
27234
27234 16.07.2009 um 16:11:54 Uhr
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é
Biber
Biber 16.07.2009 um 16:16:01 Uhr
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
Netzheimer
Netzheimer 17.07.2009 um 11:53:50 Uhr
Goto Top
Hier ein Beispiel:

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

Ergebnis:
8
Biber
Biber 07.08.2009 um 21:17:06 Uhr
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
artus-Excalibur
artus-Excalibur 10.08.2009 um 11:33:08 Uhr
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