[gelöst]Datediff Problem

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

DeeJay
**
Beiträge: 38
Registriert: Mo, 21.04.2008 09:39
Kontaktdaten:

Re: Datediff Problem

Beitrag von DeeJay »

durch datediff wir ja scheinbar nur die differenz an tagen ausgegeben , also eine dezimalzahl
datediff(datum1,datum2) as ergebniss
dann kommt halt z.b. 4 raus
aber ich brauch durch die
IF (datum1,datum1,datum2) als datum
also
wenn (datum1 , true datum1 , false datum2) als neues datum
oder weiter

wenn zahlungseingang war dann stimmt datum 1 wenn dies aber nicht stimmt dann muss datum2 + 20 tage
aus diesem rechnungsdatum was bei neues datum erscheint wird dann notfalls eine mahnstufe von 1-4

somit also nochmal zurück zum anfang
Access SQL Code

Code: Alles auswählen

SELECT IIf([Erwartet],[Erwartet],[ReDatum]+20) AS Datum, Abf_Rechnungen_offen.LfdReNr, Abf_Rechnungen_offen.Matchcode, IIf([Skontobetrag],[Skontobetrag],[Nettosumme]) AS Summe
FROM Abf_Rechnungen_offen;
dort nochmal zu sehen , if erwartet -> true erwartet -> false redatum+20 <- false kann ansich nur dann auftreten wenn der kunde neu ist und das erste mal eine rechnung erhält , die alten haben ja schon durchschnittliche zahlungsziele

Code: Alles auswählen

SELECT If(`Erwartet`,`Erwartet`,`ReDatum`+20) AS `Datum`    ,`ReDatum`,`Erwartet`,`LfdReNr` , `Matchcode`, If( `Skontobetrag`, `Skontobetrag`, `Nettosumme` ) AS `Summe`
 FROM `abf_Rechnungen_offen`


wenn ich in die SELECT DATE_ADD(`ReDatum`, INTERVAL 20 DAY) AS Datum schreibe erhalte ich ein ergebniss in Datumsformat

nur muss ja nicht bei allen das Rechnungsdatum genommen werden

vllt denk ich auch nur zu verquer ich weis es nicht :(

EDIT:

Code: Alles auswählen

SELECT If(`Erwartet`,`Erwartet`,DATE_ADD(`ReDatum`,INTERVAL 20 DAY )) AS `Datum`    ,`ReDatum`,`Erwartet`,`LfdReNr` , `Matchcode`, If( `Skontobetrag`, `Skontobetrag`, `Nettosumme` ) AS `Summe`
 FROM `abf_Rechnungen_offen`
hab das nun nochmals umgestellt
wenn erwartet = erwartet <- true , erwartet false dann DATE_ADD
die felder `ReDatum` und `Erwartet` habe ich nun nur hinzugefügt um zu sehen ob die abfrage wirklich drauf zugreift
oOO 2.4.1
Windows 2000 /Kubuntu 8.04
MySQL 5.0.60 (Gentoo Server)
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Datediff Problem

Beitrag von Barlee »

Hallo deeJay,
nur muss ja nicht bei allen das Rechnungsdatum genommen werden
dann baue doch eine Fallunterscheidung a la CASE WHEN ein.

http://dev.mysql.com/doc/refman/5.1/de/ ... tions.html

Gruß Barlee
DeeJay
**
Beiträge: 38
Registriert: Mo, 21.04.2008 09:39
Kontaktdaten:

Re: Datediff Problem

Beitrag von DeeJay »

mahlzeit barlee

*verzweifel*

auf der seite war ich gerade um nochmals das if zu studieren, brachte mir aber auch keine punkte

Code: Alles auswählen

SELECT CASE  WHEN `Erwartet`THEN `Erwartet` ELSE DATE_ADD(`ReDatum`,INTERVAL 20 DAY ) END AS Datum
    ,`ReDatum`,`Erwartet`,`LfdReNr` , `Matchcode`, If( `Skontobetrag`, `Skontobetrag`, `Nettosumme` ) AS `Summe`
 FROM `abf_Rechnungen_offen`
dies nun der verzweifelte versuch mit case when .. ich erhalte wieder <OBJECT> als ergebnis
oOO 2.4.1
Windows 2000 /Kubuntu 8.04
MySQL 5.0.60 (Gentoo Server)
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Datediff Problem

Beitrag von Barlee »

Hallo DeeJay,

<OBJECT> kommt normalerweise zurück, wenn man das Ausgangsdatum bei DATE_ADD in Hochkommas setzt. Nimm diese mal bei ReDatum weg und probiere es ohne. Tut sich dann was?

Gruß Barlee
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Datediff Problem

Beitrag von Barlee »

noch ein Nachtrag:

mein Vorschlag mit CASE WHEN bezog sich nur auf das falseValue vom IF. Ich hatte verstanden, dass nicht in jedem Fall das Rechnungsdatum zugrundegelegt werden soll, falls IF = FALSE ist ???

Gruß Barlee
DeeJay
**
Beiträge: 38
Registriert: Mo, 21.04.2008 09:39
Kontaktdaten:

Re: Datediff Problem

Beitrag von DeeJay »

so habe nun alle `` gelöscht in der case when schleife. die spalten bleiben wie sie sind
<OBJECT> und der rest wird richtig dargestellt
Dateianhänge
db3.jpg
db3.jpg (101.28 KiB) 1202 mal betrachtet
oOO 2.4.1
Windows 2000 /Kubuntu 8.04
MySQL 5.0.60 (Gentoo Server)
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Datediff Problem

Beitrag von Barlee »

Hallo DeeJay,

das mit dem <OBJECT> ist ein Formatierungsproblem bezogen auf die Datumsformate.
Anstelle von

Code: Alles auswählen

CASE  WHEN `Erwartet`THEN `Erwartet` ELSE DATE_ADD(`ReDatum`,INTERVAL 20 DAY ) END AS Datum
solltest Du probieren:

Code: Alles auswählen

CASE  WHEN Erwartet THEN DATE_FORMAT(Erwartet, '%d.%m.%y') 
ELSE DATE_FORMAT(DATE_ADD(ReDatum,INTERVAL 20 DAY ), '%d.%m.%y')) END AS Datum
Gruß Barlee
DeeJay
**
Beiträge: 38
Registriert: Mo, 21.04.2008 09:39
Kontaktdaten:

Re: Datediff Problem

Beitrag von DeeJay »

juhu das hat geklappt auch wenn sich in deinem code ein kleiner fehler eingeschlichen hat :) da war eine ) zuviel

Code: Alles auswählen

SELECT CASE  WHEN Erwartet THEN DATE_FORMAT(Erwartet, '%d.%m.%Y') ELSE  DATE_FORMAT(DATE_ADD(ReDatum, INTERVAL 20 DAY ), '%d.%m.%Y') END AS Datum
    ,`LfdReNr` , `Matchcode`, If( `Skontobetrag`, `Skontobetrag`, `Nettosumme` ) AS `Summe`
FROM `abf_Rechnungen_offen`
die version tut nun :)
oOO 2.4.1
Windows 2000 /Kubuntu 8.04
MySQL 5.0.60 (Gentoo Server)
Antworten