Seite 1 von 1

gelöst: Probleme mit UPDATE col SET ...

Verfasst: So, 15.02.2015 18:01
von heinz_ketchup
Hallo liebe Helfenden,

ich versuche gerade in MySQL die Spalteninhalte 'sim_zahl_datum' meiner Tabelle 'simulation' per UPDATE ... SET Befehl zu ändern. Leider mache ich etwas falsch und bekomme immer die übliche Fehlermeldung "You have an error in your SQL syntax; check the manual ..."

Ich habe folgende Problemstellung. In der Spalte 'sim_zahl_datum' stehen unterschiedliche Datumswerte für Zahlungen. Ich möchte nun all die Datumswerte ändern, die auf einen Samstag oder Sonntag fallen, so dass der darauf folgende Montag als Zahlungstag ausgewiesen wird. Mein SQL-Statement sieht so aus:

Code: Alles auswählen


UPDATE simulation
 
SET
	IF(
	DAYNAME(sim_zahl_datum) = 'Saturday', 
	sim_zahl_datum + INTERVAL 2 DAY, 
	IF(
	DAYNAME(sim_zahl_datum) = 'Sunday', 
	sim_zahl_datum + INTERVAL 1 DAY,
	sim_zahl_datum)
	
Der Feldtyp in der Tabelle 'simulation' ist als DATE deklariert. Vielleicht sieht ja jemand meinen Denk- oder Syntax-Fehler.
Vielen Dank für die Hilfe.

VG Werner

Re: Probleme mit UPDATE col SET ...

Verfasst: So, 15.02.2015 19:22
von RobertG
Hallo Werner,

ohne überhaupt den Code auf Korrektheit mit NySQL zu überprüfen: Zumindest fehlt in dem, was Du hier angegeben hast, eine schließende Klammer.
Dann habe ich mir den Code angesehen und mit MySQL verglichen. Meines Wissens kannst Du so keine Datumsumrechnung machen. Ich würde das folgendermaßen zu lösen versuchen:

Code: Alles auswählen

UPDATE simulation 
SET sim_zahl_datum =
CASE 
WHEN DAYNAME(sim_zahl_datum) = 'Saturday' THEN DATE_ADD(sim_zahl_datum, INTERVAL 2 DAY)
WHEN DAYNAME(sim_zahl_datum) = 'Sunday' THEN DATE_ADD(sim_zahl_datum, INTERVAL 1 DAY)
ELSE sim_zahl_datum
END
Gruß

Robert

gelöst: Probleme mit UPDATE col SET ...

Verfasst: Mo, 16.02.2015 10:32
von heinz_ketchup
Hallo Robert,

vielen Dank!

Du hast natürlich recht, zwei IF Bedingungen = 2 Klammern zum Schluss.
Aber daran lag's nicht. Die Funktion der Wahl lautet DATE_ADD() und CASE WHEN ist auch etwas eleganter und übersichtlicher.
Jetzt klappt die Datumsänderung wie gewünscht.

Nochmals Danke und schöne Grüße
Werner