Hilfe bei SQL-Befehl gesucht

  • Hallo zusammen,


    ausgehend von diesem Thread bräuchte ich nochmal eure Hilfe. Ich würde gerne die Datensätze des Visforms-Formulars auf "versteckt" (=published=0) setzen, deren Reservierungsdatum (in Feld F12) in der Vergangenheit liegt.


    Bei SQL-Befehl UPDATE `cevqz_visforms_2` SET `published` = '0' WHERE DATEDIFF(`F12`, NOW()) >= 1 bekomme ich die Fehlermeldung Warning: #1292 Falscher datetime-Wert: '09.03.2021'.


    Einen Screenshot aus phpMyAdmin habe ich angehangen.


    Kann mir jemand sagen, was ich falsch gemacht habe?


    Vielen Dank und viele Grüße

  • '09.03.2021' ist halt kein Datum für Mysql. Lediglich ein String. NOW() kannst du nur mit einem Datetime-Format vergleichen. So was wie in Spalte created.


    Bin nicht sicher, ob z.B. ein STR_TO_DATE(...) über dein deutsches Datum hier helfen könnte.


    Eigentlich wäre es besser die Spalte F12 gleich als datetime zu speichern. Weiß aber nicht, ob Visforms da mitspielt. Weiß auch nicht, ob du auf die Ausgabe Einfluss nehmen kannst, wo ja eine Konvertierung in deutsches Datum gewünscht, denke ich.

  • Re:Later: Vielen Dank für deine schnelle Antwort!


    Das Feld F12 ist in Visforms als ein Eingabefeld vom Typ "Datum" angelegt. Ich wüsste nicht wie ich das ändern könnte.


    Okay, ich müsste also vorher den String aus F12 in ein DateTime umwandeln. Mit UPDATE `cevqz_visforms_2` SET `published` = '0' WHERE STR_TO_DATE(`F12`, '%d/%m/%Y') DATEDIFF(`F12`, NOW()) >= 1 funktioniert es jedenfalls auch nicht.


    Viele Grüße

  • Gehe ich davon aus, dass sich dieser Thread damit erledigt hat?


  • So, ich habe es selbst hinbekommen: Die Aweisung lautet UPDATE `cevqz_visforms_2` SET `published` = '0' WHERE STR_TO_DATE(`F12`, '%d.%m.%Y') < curdate(); Wieder was gelernt.


    Falls mal jemand so etwas braucht...


    Viele Grüße