Seite 1 von 1

MYSQL String richtig formatieren

Verfasst: Dienstag 26. März 2019, 11:44
von matze1708
Hallo zusammen,

ich möchte ein Date_Format an den MySQl Server senden. Aber da dieses Format mit %Y ist, meint das PYthon es ist ein Parameter.

Wie kann ich das umgehen?

Code: Alles auswählen

Select 
ID
FROM tbl_Schiesstand Where StandID = 1 AND Standaufsicht =1 AND DATE_FORMAT(Beginn, '%Y-%m-%d') = CURDATE()

Code: Alles auswählen

def is_everyone_current_standaufsicht(db, range_id):
    print()
    with closing(db.cursor()) as cursor:
        cursor.execute("""Select 
                        ID
                        FROM tbl_Schiesstand 
                        Where StandID = %s AND Standaufsicht = 1 AND DATE_FORMAT(Beginn, '%Y-%m-%d') = CURDATE()""", (range_id,))
        return cursor.fetchone() is None

Re: MYSQL String richtig formatieren

Verfasst: Dienstag 26. März 2019, 12:09
von Sirius3
Warum benutzt Du überhaupt `DATE_FORMAT`? Vorher hast Du `DATA` verwendet.

Re: MYSQL String richtig formatieren

Verfasst: Dienstag 26. März 2019, 12:11
von sparrow
Ich habe hier kein MySQL installiert, aber ich glaube nicht, dass man das so kompliziert in der Abfrage verfrickeln muss.

Vielleicht so?

Code: Alles auswählen

Select 
ID
FROM tbl_Schiesstand Where StandID = 1 AND Standaufsicht =1 AND DATE(Beginn) = CURDATE()

Re: MYSQL String richtig formatieren

Verfasst: Dienstag 26. März 2019, 12:20
von matze1708
Date() war die Antwort. Da hätte ich auch drauf kommen können :-(

Re: MYSQL String richtig formatieren

Verfasst: Dienstag 26. März 2019, 12:48
von __blackjack__
@matze1708: Hat jeder Benutzer auf jedem Platz in jedem Stand seine eigene Aufsicht? Falls nein, und die Standaufsicht pro Stand, also für alle Plätze/Benutzer gilt, dann vermute ich mal das die Spalte `Standaufsicht` in der falschen Tabelle steht. Der Name `tbl_Schiesstand` ist mir auch noch nicht so ganz klar. Das sieht mir eher nach einem Protokoll aus. Sollte da überhaupt ein Eintrag drin sein wenn es keine Aufsicht gibt‽ Dann darf ja nicht geschossen werden, also gibt es auch keinen Beginn des Schiessens, folglich auch keinen Eintrag dafür im Protokoll.