Seite 1 von 1
Re: Abfrage, ob Datum in der Zukunft liegt [SQL]
Verfasst: Fr, 06.06.2014 09:44
von pmoegenb
stefan88888 hat geschrieben:
Code: Alles auswählen
SELECT 'kunden'.*, 'kunden'.'VOLLWARTUNG', 'kunden'.'VOLLWARTUNG_ENDE' FROM 'mysql'.'kunden' AS 'kunden' WHERE 'VOLLWARTUNG' = 1 AND 'VOLLWARTUNG_ENDE' > CURDATE( ) + 30
Probiere es mal so:
Code: Alles auswählen
SELECT * FROM "mysql"."kunden" AS "kunden" WHERE "VOLLWARTUNG" = 1 AND "VOLLWARTUNG_ENDE" > (CURRENT_DATE() + 30)
Re: Abfrage, ob Datum in der Zukunft liegt [SQL]
Verfasst: Fr, 06.06.2014 11:51
von RobertG
Hallo *,
das wird so nicht funktionieren: CURDATE() ist ein Datum, '30' eine Zahl. Was soll zum Datum addiert werden? Tage, Monate, Jahre ...
Mit der Anweisung
wird der Unterschied in Tagen berechnet und berücksichtigt
Gruß
Robert
Re: Abfrage, ob Datum in der Zukunft liegt [SQL]
Verfasst: Sa, 07.06.2014 02:38
von sschultewolter
Hallo Robert, ja 30 ist eine Zahl

Das sollen Tage sein.
Ich hab da noch etwas mit dem UNIX Zeitsstempel im Kopf gehabt. Denn hinter jedem Datum steht auch eine einfache Intergerzahl.
Ich werde das sofort ausprobieren! Danke schonmal.
Re: Abfrage, ob Datum in der Zukunft liegt [SQL]
Verfasst: So, 08.06.2014 17:35
von RobertG
Hallo sschultewolter,
der UNIX-Zeitstempel rechnet aber die Sekunden seit dem 1. Januar 1970 00:00:00 Uhr. Wenn Du da also 30 addierst, dann wärst Du gerade einmal eine halbe Minute voran gekommen. Die Datenbank arbeitet daher mit Funktionen, die entsprechend direkten Zugriff auf Minuten, Stunden, Tage, Monate und Jahre erlauben.
Gruß
Robert
Re: Abfrage, ob Datum in der Zukunft liegt [SQL]
Verfasst: So, 08.06.2014 17:46
von sschultewolter
Code: Alles auswählen
SELECT "kunden".*, "kunden`.`VOLLWARTUNG", "kunden"."VOLLWARTUNG_ENDE"
FROM "xy"."kunden" AS "kunden"
WHERE "VOLLWARTUNG" = 1 AND DATEDIFF('dd',CURDATE(), "WARTUNG_ENDE" ) < 30
Was ist hier falsch? Bekomme die Fehlermeldung, "Incorrect parameter count in the call to native function 'DATEDIFF'
Re: Abfrage, ob Datum in der Zukunft liegt [SQL]
Verfasst: So, 08.06.2014 18:05
von pmoegenb
sschultewolter hat geschrieben:SELECT "kunden".*, "kunden"."VOLLWARTUNG", "kunden"."VOLLWARTUNG_ENDE"
FROM "xy"."kunden" AS "kunden"
WHERE "VOLLWARTUNG" = 1 AND DATEDIFF('dd',CURDATE(), "WARTUNG_ENDE" ) < 30
Außerdem selektierst Du Spalten mehrfach.
Re: Abfrage, ob Datum in der Zukunft liegt [SQL]
Verfasst: So, 08.06.2014 18:20
von sschultewolter
Die Mehrfachselektierung hab ich rausgenommen. Das mit dem DATEDIFF geht immer noch nicht.
In der Testdatenbank, welche mit einer eingebetten DB arbeitet, geht es. Mit der Version, die ihre Daten von einer externen Datenbank(MySQL) bekommt, geht es nicht.
Code: Alles auswählen
SELECT `VOLLWARTUNG`, `VOLLWARTUNG_ENDE` FROM `xy`.`kunden` AS `kunden` WHERE DATEDIFF( 'dd', `VOLLWARTUNG_ENDE`, CURDATE( ) ) > 30
Re: Abfrage, ob Datum in der Zukunft liegt [SQL]
Verfasst: So, 08.06.2014 18:30
von RobertG
Hallo sschultewolter,
sschultewolter hat geschrieben:Code: Alles auswählen
SELECT "kunden".*, "kunden`.`VOLLWARTUNG", "kunden"."VOLLWARTUNG_ENDE"
FROM "xy"."kunden" AS "kunden"
WHERE "VOLLWARTUNG" = 1 AND DATEDIFF('dd',CURDATE(), "WARTUNG_ENDE" ) < 30
Was ist hier falsch? Bekomme die Fehlermeldung, "Incorrect parameter count in the call to native function 'DATEDIFF'
Die Anzahl der Parameter zu dem Befehl DATEDIFF soll angeblich nicht korrekt sein.
Mit welcher Datenbanbk arbeitest Du? Mit der internen HSQLDB? Die gesetzten Parameter scheinen von der Ansicht her korrekt zu sein. 'dd' für Tage, CURDATE() für das aktuelle Datum und "Wartung_Ende" für ein zweites Datum.
Ich sehe
FROM "xy"."kunden"
und werfe noch einmal einen Blick auf das erste Posting - da steht etwas von MySQL.
DATEDIFF in MySQL hat nur zwei Parameter und liest grundsätzlich nur den Unterschied in Tagen aus - das würde die Fehlermeldung "Falsche Parameteranzahl" erklären. Also nur die Angaben
DATEDIFF(CURDATE(), "WARTUNG_ENDE")
ergeben unter MySQL den Tagesunterschied. Gegebenenfalls noch die Datumsfolge ändern.
Vor dem Hintergrund MySQL stimmt dann auch die Formulierung CURDATE()+1 ist Morgen - nur hat MySQl da ein bisschen Probleme mit der Anzeige als Datum. Die erfolgt ohne Bindestriche.
Gruß
Robert
Re: Abfrage, ob Datum in der Zukunft liegt [SQL]
Verfasst: So, 08.06.2014 18:50
von sschultewolter
Hallo Robert,
danke, das hat geholfen. Mit dem Datum habe ich keinerlei Probleme. Kann mir nun wunderbar ausgeben lassen, welche Vollwartungen bereits abgelaufen und welche in den nächsten 30 Tagen ablaufen.